sql >> Database >  >> RDS >> Mysql

Een opgeslagen datumveld gebruiken om een ​​veld te berekenen dat het huidige aantal verstreken dagen berekent

Misschien vind je het leuk om te lezen over de CURDATE() en DATEDIFF() functies (en andere functies in MySQL die in de toekomst nuttig voor u kunnen zijn) hier: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;

Als u dit in de tabel wilt ingebouwd hebben, kunt u een VIEW gebruiken:

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

MySQL 5.7 ondersteunt gegenereerde kolommen waar u een virtuele kolom kunt toevoegen op basis van een uitdrukking, maar dit werkt in dit geval niet omdat het gebruik van een niet-deterministische functie zoals CURDATE() in dergelijke uitdrukkingen niet is toegestaan.

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. Fout bij het verzenden van uitvoer van een mysql-query naar een csv-bestand

  2. Hoe Query Windows en andere tabbladen te Docken / UnDock in SQL Server Management Studio (SSMS) - SQL Server / TSQL-zelfstudie, deel 21

  3. Hoe rijwaarden van een datagridview te krijgen en deze door te geven aan een ander formulier met een knop in dezelfde rij

  4. Gebruik SparkSession.sql() met JDBC