Uložení takové "hodnoty" DATE do DATE
nebo DATETIME
sloupec je možný pomocí sql_mode ALLOW_INVALID_DATES
a žádný přísný režim:
Takže kontrola data pro povolené contable datum by mohla být provedena pomocí triggerů, protože neexistuje žádná jiná kontrola. Předpokládám, že pro tuto aplikaci by 31. den každého měsíce bylo neplatné datum.
Příklad:
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;
Výsledek:
cday cmonth cdiff
-------------------
30 2 28
Používání MySQL Workbench, které dostávám s
SELECT contable_date FROM example
následující výsledek:
contable_date
-------------
2014-02-30
ale to nefunguje na sqlfiddle.com.
Nedoporučoval bych to však, zejména proto, že není možné používat striktní režim SQL. Měli bychom také zvážit vliv na funkce data a času.