Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando um campo de data armazenado para calcular um campo que calcula o número atual de dias passados


Você pode gostar de ler sobre o CURDATE() e DATEDIFF() funções (e outras funções no MySQL que podem ser úteis para você no futuro) aqui: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;

Se você quiser isso embutido na tabela, você pode usar uma VIEW:
CREATE VIEW MyView AS
  SELECT *, DATEDIFF(CURDATE(), mydatefield) AS days_since
  FROM MyTable;

MySQL 5.7 suporta colunas geradas onde você pode adicionar uma coluna virtual com base em uma expressão, mas isso não funciona nesse caso porque o uso de uma função não determinística como CURDATE() não é permitido em tais expressões.
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.