我正在使用MySQL和phpMyAdmin。我的数据库中有一个“日期”字段,我需要在MySQL_db中创建一个字段,该字段将计算并显示自每个记录/行的“日期”字段中的日期以来经过的天数。
我没有能力使用PHP动态生成代码。
有没有办法在MySQL中创建一个允许我在MySQL_db中显示此计算的字段?
答案 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.