我正在使用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