Mysql
 sql >> база данни >  >> RDS >> Mysql

Използване на съхранено поле за дата за изчисляване на поле, което изчислява текущия брой изминали дни

Може да искате да прочетете за CURDATE() и DATEDIFF() функции (и други функции в MySQL, които може да са полезни за вас в бъдеще) тук: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;

Ако искате това да бъде вградено в таблицата, можете да използвате VIEW:

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

MySQL 5.7 поддържа генерирани колони където можете да добавите виртуална колона въз основа на израз, но това не работи в този случай, защото използването на недетерминирана функция като CURDATE() не е позволено в такива изрази.

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. Проверете езика на низа въз основа на глифове в PHP

  2. Използване на libpqxx за съхраняване на данни в насипно състояние ИЛИ как да използвате израз COPY в libpqxx

  3. Брой атрибути за фасетирано търсене

  4. Извличане на текущи потребителски идентификатори от базата данни, за да се използва в нова таблица

  5. Как да филтрирате SQL резултатите във връзка има-много-през