sql >> Databasteknik >  >> RDS >> Mysql

Använda ett lagrat datumfält för att beräkna ett fält som beräknar det aktuella antalet passerade dagar

Du kanske vill läsa om CURDATE() och DATEDIFF() funktioner (och andra funktioner i MySQL som kan vara användbara för dig i framtiden) här: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;

Om du vill ha detta inbyggt i tabellen kan du använda en VIEW:

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

MySQL 5.7 stöder genererade kolumner där du kan lägga till en virtuell kolumn baserad på ett uttryck, men det fungerar inte i det här fallet eftersom det inte är tillåtet att använda en icke-deterministisk funktion som CURDATE() i sådana uttryck.

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.



  1. Maven - java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

  2. Ordna genom att använda en parameter för kolumnnamnet

  3. Hur skapar och frågar jag länkade databasservrar i SQL Server?

  4. Hur undkommer man kommatecken i CSV-värden när man importerar tabell till MySQL?