Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Używanie pola przechowywanej daty do obliczania pola, które oblicza bieżącą liczbę dni, które minęły

Możesz przeczytać o CURDATE() i DATEDIFF() funkcje (i inne funkcje w MySQL, które mogą być przydatne w przyszłości) tutaj:https://dev.mysql.com/doc/refman/5.7/en/data-i-godzina-funkcje.html#function_datediff

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

Jeśli chcesz, aby było to wbudowane w stół, możesz użyć WIDOK:

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

MySQL 5.7 obsługuje wygenerowane kolumny gdzie możesz dodać wirtualną kolumnę na podstawie wyrażenia, ale to nie działa w tym przypadku, ponieważ użycie niedeterministycznej funkcji, takiej jak CURDATE(), nie jest dozwolone w takich wyrażeniach.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwróć zarówno wynik zapytania, jak i liczbę wierszy

  2. Jak dodać więcej członków do mojej kolumny typu ENUM w MySQL?

  3. tablica echo json w kolumnie phpMyAdmin VIA PHP

  4. MySQL (lub PHP?) grupuje wyniki według danych pola

  5. filtruj replikację mysql (ignore-db)