Zapisanie takiej „wartości” DATE w DATE
lub DATETIME
kolumna jest możliwa przy użyciu sql_mode ALLOW_INVALID_DATES
i bez trybu ścisłego:
Tak więc sprawdzenie daty pod kątem dozwolonej daty contable można wykonać za pomocą wyzwalaczy, ponieważ nie ma też innego sprawdzenia. Zakładam, że dla tego wniosku 31 dzień każdego miesiąca byłby nieprawidłową datą.
Przykład:
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;
Wynik:
cday cmonth cdiff
-------------------
30 2 28
Korzystanie z MySQL Workbench, które mam z
SELECT contable_date FROM example
następujący wynik:
contable_date
-------------
2014-02-30
ale to nie działa na sqlfiddle.com.
Nie polecałbym tego jednak, zwłaszcza że nie można używać ścisłego trybu SQL. Należy również wziąć pod uwagę wpływ na funkcje daty i czasu.