Guardar tal "valor" de FECHA en un DATE
o DATETIME
la columna es posible usando sql_mode ALLOW_INVALID_DATES
y sin modo estricto:
Por lo tanto, la verificación de la fecha para una fecha contable permitida se puede hacer con disparadores, ya que no hay otra verificación también. Supongo que para esta aplicación el 31 de cada mes sería una fecha no válida.
Ejemplo:
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;
Resultado:
cday cmonth cdiff
-------------------
30 2 28
Usando MySQL Workbench obtengo con
SELECT contable_date FROM example
siguiente resultado:
contable_date
-------------
2014-02-30
pero esto no funciona en sqlfiddle.com.
Sin embargo, no recomendaría esto, especialmente porque uno no puede usar el modo SQL estricto. También se debe considerar el efecto en las funciones de fecha y hora.