Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utilisation d'un champ de date stocké pour calculer un champ qui calcule le nombre actuel de jours écoulés

Vous aimerez peut-être en savoir plus sur le CURDATE() et DATEDIFF() fonctions (et d'autres fonctions de MySQL qui pourraient vous être utiles à l'avenir) ici :https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_datediff

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

Si vous voulez que cela soit intégré au tableau, vous pouvez utiliser une VUE :

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

MySQL 5.7 prend en charge les les colonnes générées où vous pouvez ajouter une colonne virtuelle basée sur une expression, mais cela ne fonctionne pas dans ce cas car l'utilisation d'une fonction non déterministe comme CURDATE() n'est pas autorisée dans de telles expressions.

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.