[英]Issues using DATEDIFF with ALTER TABLE
我正在嘗試將一個計算列添加到現有數據庫表中,該表將計算年齡,例如從存儲為 YEAR (4) 的字段“DOB”(例如 1988)中的“23”。
使用下面的,我得到一個
1582 錯誤 - 調用本機 function 'DATEDIFF' 時參數計數不正確。
ALTER TABLE names ADD Age INT GENERATED ALWAYS AS (DATEDIFF('year', DOB, CURDATE))
我在網上找到的許多示例在參數計數方面都有相似的布局(有些使用 GETDATE 或 NOW 而不是 CURDATE)。
任何人都知道我做錯了什么?
感謝 RigsFolly & Barmar 的反饋。 我泡了一杯新茶,又看了一遍。
有了DATEDIFF,好像MYSQL Server語法可以使用datepart,然后用兩個日期來計算(包括GETDATE)。 我通過 myphp 管理員使用 MySQL,它似乎不喜歡日期部分。
我刪除了日期部分並將存儲的 DOB 字段的日期格式從“YEAR”更改為“DATE”。 結果我不再收到參數錯誤,默認情況下 DATEDIFF 的 output 以天為單位返回。 然后我將 output 除以 365 得到年數。
我原來的順序也是錯誤的,這給了我 DATEDIFF output 作為負值,所以改變了順序並且它很有魅力。 謝謝你。
ALTER TABLE names ADD Age INT GENERATED ALWAYS AS (DATEDIFF(CURDATE(), DOB) / 365);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.