Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo di un campo data memorizzato per calcolare un campo che calcola il numero corrente di giorni trascorsi

Potresti leggere informazioni su CURDATE() e DATEDIFF() funzioni (e altre funzioni in MySQL che potrebbero esserti utili in futuro) qui: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;

Se vuoi che sia integrato nella tabella, puoi utilizzare VIEW:

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

MySQL 5.7 supporta colonne generate dove puoi aggiungere una colonna virtuale basata su un'espressione, ma in questo caso non funziona perché l'uso di una funzione non deterministica come CURDATE() non è consentito in tali espressioni.

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.