我正在使用MySQL和phpMyAdmin。我在我的数据库中有一个'date'字段,我需要在MySQL_db中创建一个字段,它将计算并显示每个记录/行在'date'字段中过去的日期数。使用存储日期字段来计算一个字段,计算当前的天数
我没有能力用PHP生成代码。
有没有办法在MySQL中创建一个字段,使我能够在MySQL_db中显示此计算?
我正在使用MySQL和phpMyAdmin。我在我的数据库中有一个'date'字段,我需要在MySQL_db中创建一个字段,它将计算并显示每个记录/行在'date'字段中过去的日期数。使用存储日期字段来计算一个字段,计算当前的天数
我没有能力用PHP生成代码。
有没有办法在MySQL中创建一个字段,使我能够在MySQL_db中显示此计算?
你可能会喜欢阅读有关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;
如果你想要这个建在表,你可以使用一个观点:
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.
我知道如果我可以更改应用程序(PhP)代码,我可以使用DATEDIFF()创建此函数。我不能。我唯一的办法是让MySQL的表中的'date'中的'day count'出来。如果这是不可能的,我没有其他选择可用。 –
我想我不明白为什么视图不符合您的需求。 –
这是不是只是一个ALTER TABLE来添加计算领域? –
也许我应该澄清。我在问什么..有没有办法在MySQL TABLE中创建一个字段,它将统计同一个表记录/行中现有DATE字段的天数? –
那么为什么PHP标签? – Strawberry