sql >> Databáze >  >> RDS >> Mysql

Použití pole uloženého data k výpočtu pole, které počítá aktuální počet uplynulých dnů

Možná si budete chtít přečíst o CURDATE() a DATEDIFF() funkce (a další funkce v MySQL, které se vám mohou v budoucnu hodit) zde: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;

Pokud to chcete zabudovat do tabulky, můžete použít VIEW:

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

MySQL 5.7 podporuje generované sloupce kde můžete přidat virtuální sloupec založený na výrazu, ale to v tomto případě nefunguje, protože použití nedeterministické funkce jako CURDATE() není v takových výrazech povoleno.

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. SQL Server 2008 metody stránkování?

  2. Potenciální vylepšení pro aktualizace statistik:MAXDOP

  3. Hibernace časové razítko s časovým pásmem

  4. Příkaz MySQL CASE a REGEXP