Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

माइस्क्ल पर 30-फ़रवरी की बचत (दिनांक स्वरूपण)

ऐसे DATE "मान" को DATE में सहेजा जा रहा है या DATETIME कॉलम sql_mode ALLOW_INVALID_DATES का उपयोग करके संभव है और कोई सख्त मोड नहीं:

तो ट्रिगर्स के साथ अनुमत कॉन्टेबल डेट की तारीख की जांच की जा सकती है, क्योंकि कोई अन्य चेक भी नहीं है। मुझे लगता है कि इस आवेदन के लिए प्रत्येक माह की 31 तारीख अमान्य होगी।

उदाहरण:

CREATE TABLE example (
  contable_date DATE NOT NULL
) ENGINE=INNODB;

-- set the sql_mode (here for the session)
SET @@SESSION.sql_mode = 'ALLOW_INVALID_DATES';

INSERT INTO example (contable_date) VALUES ("2014-02-30");

SELECT 
    DAY(contable_date) as cday,
    MONTH(contable_date) as cmonth,
    TIMESTAMPDIFF(DAY, contable_date, '2014-03-30') as cdiff
FROM 
    example;

परिणाम:

cday  cmonth  cdiff
-------------------
  30       2     28

डेमो

MySQL वर्कबेंच का उपयोग करके मुझे मिलता है

SELECT contable_date FROM example

निम्नलिखित परिणाम:

contable_date
-------------
   2014-02-30

लेकिन यह sqlfiddle.com पर काम नहीं करता है।

हालांकि मैं इसकी अनुशंसा नहीं करता, खासकर क्योंकि कोई सख्त SQL मोड का उपयोग करने में सक्षम नहीं है। दिनांक और समय के कार्यों पर भी प्रभाव पर विचार करना चाहिए।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL और MariaDB में सभी डेटाबेस को सूचीबद्ध करने और दिखाने के लिए SQL कमांड

  2. MySQL में सब स्ट्रिंग्स के बीच टेक्स्ट निकालना

  3. org.hibernate.MappingException:संपत्ति मानचित्रण में ENUM इकाई में स्तंभों की संख्या गलत है

  4. SQL इंजेक्शन जो mysql_real_escape_string () के आसपास हो जाता है

  5. MySQL में संवेदनशील डेटा स्टोर करने का सबसे अच्छा तरीका क्या है?