簡體   English   中英

將 DATEDIFF 與 ALTER TABLE 一起使用的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM