2017-09-04 56 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

我想我不明白爲什麼視圖不符合您的需求。 –