2017-09-04 89 views
-1

我正在使用MySQL和phpMyAdmin。我在我的数据库中有一个'date'字段,我需要在MySQL_db中创建一个字段,它将计算并显示每个记录/行在'date'字段中过去的日期数。使用存储日期字段来计算一个字段,计算当前的天数

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

有没有办法在MySQL中创建一个字段,使我能够在MySQL_db中显示此计算?

+0

这是不是只是一个ALTER TABLE来添加计算领域? –

+0

也许我应该澄清。我在问什么..有没有办法在MySQL TABLE中创建一个字段,它将统计同一个表记录/行中现有DATE字段的天数? –

+0

那么为什么PHP标签? – Strawberry

回答

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; 

如果你想要这个建在表,你可以使用一个观点:

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. 
+0

我知道如果我可以更改应用程序(PhP)代码,我可以使用DATEDIFF()创建此函数。我不能。我唯一的办法是让MySQL的表中的'date'中的'day count'出来。如果这是不可能的,我没有其他选择可用。 –

+0

我想我不明白为什么视图不符合您的需求。 –