Spara ett sådant DATUM-"värde" i en DATE
eller DATETIME
kolumnen är möjlig med sql_mode ALLOW_INVALID_DATES
och inget strikt läge:
Så att kontrollera datumet för ett tillåtet datum kan göras med triggers, eftersom det inte finns någon annan kontroll också. Jag antar att för denna ansökan skulle den 31:e varje månad vara ett ogiltigt datum.
Exempel:
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
Använder MySQL Workbench jag får med
SELECT contable_date FROM example
följande resultat:
contable_date
-------------
2014-02-30
men det här fungerar inte på sqlfiddle.com.
Jag skulle dock inte rekommendera detta, speciellt eftersom man inte kan använda strikt SQL-läge. Man bör också överväga effekten på datum- och tidsfunktionerna.