使用存储的日期字段计算计算当前天数的字段

时间:2017-09-04 18:17:10

标签: mysql calculated-columns

我正在使用MySQL和phpMyAdmin。我的数据库中有一个“日期”字段,我需要在MySQL_db中创建一个字段,该字段将计算并显示自每个记录/行的“日期”字段中的日期以来经过的天数。

我没有能力使用PHP动态生成代码。

有没有办法在MySQL中创建一个允许我在MySQL_db中显示此计算的字段?

1 个答案:

答案 0 :(得分:0)

您可能希望在此处阅读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支持generated columns,您可以在其中添加基于表达式的虚拟列,但在这种情况下这不起作用,因为在此类表达式中不允许使用像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.