At gemme sådan en DATO "værdi" i en DATE
eller DATETIME
kolonnen er mulig ved at bruge sql_mode ALLOW_INVALID_DATES
og ingen streng tilstand:
Så tjek af datoen for en tilladt aftaledato kunne gøres med triggere, da der heller ikke er andre tjek. Jeg går ud fra, at for denne ansøgning ville den 31. i hver måned være en ugyldig dato.
Eksempel:
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;
Resultat:
cday cmonth cdiff
-------------------
30 2 28
Bruger MySQL Workbench jeg får med
SELECT contable_date FROM example
følgende resultat:
contable_date
-------------
2014-02-30
men dette virker ikke på sqlfiddle.com.
Jeg vil dog ikke anbefale dette, især fordi man ikke er i stand til at bruge streng SQL-tilstand. Man bør også overveje virkningen på dato- og tidsfunktionerne.