ऐसे 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 मोड का उपयोग करने में सक्षम नहीं है। दिनांक और समय के कार्यों पर भी प्रभाव पर विचार करना चाहिए।