そのような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
MySQLWorkbenchを使用して取得
SELECT contable_date FROM example
次の結果:
contable_date
-------------
2014-02-30
しかし、これはsqlfiddle.comでは機能しません。
ただし、これはお勧めしません。特に、厳密なSQLモードを使用できないためです。日付と時刻の関数への影響も考慮する必要があります。