sql >> Base de Datos >  >> RDS >> Mysql

Uso de un campo de fecha almacenado para calcular un campo que calcula el número actual de días transcurridos

Es posible que desee leer sobre el CURDATE() y DATEDIFF() funciones (y otras funciones en MySQL que pueden serle útiles en el futuro) aquí:https://dev.mysql.com/doc/refman/5.7/en/funciones-fecha-y-hora.html#function_datediff

SELECT *, DATEDIFF(CURDATE(), mydatefield) AS days_since
FROM MyTable;

Si desea que esto esté integrado en la tabla, puede usar una VISTA:

CREATE VIEW MyView AS
  SELECT *, DATEDIFF(CURDATE(), mydatefield) AS days_since
  FROM MyTable;

MySQL 5.7 admite columnas generadas donde puede agregar una columna virtual basada en una expresión, pero esto no funciona en este caso porque el uso de una función no determinista como CURDATE() no está permitido en tales expresiones.

ALTER TABLE MyTable ADD COLUMN days_since INT AS (DATEDIFF(CURDATE(), mydatefield));
ERROR 3102 (HY000): Expression of generated column 'days_since' contains a disallowed function.