[英]SQL Update using values from other columns in same table
我有一個SQL表“數據”,其中包含以下幾列:id(int),date1(日期時間),date2(日期時間),差異(浮點數)
我想做的就是更新此表,以便僅當date2不等於'0000-00-00 00:00:00時,“ difference”列才包含date2和date1之間的年份差異(以浮點數表示)。 '
我在想一些事情
Update data m
SET difference = datediff("hh",m.date2, m0.date1)/8765 --there are 8765 hours per year so this should give me my float
FROM data m0
WHERE m.id = m0.id
AND m.date2 <> '0000-00-00 00:00:00';
但是,當我嘗試此操作時,我收到一條錯誤消息,指出“ SQL語法錯誤。檢查MySQL服務器版本以獲取正確的語法,以使用來自'd'的近數據SET差異= datediff(“ hh,m.date2,m0.date10 / 8765)在第1行
我將如何修改我的sql語句以獲得所需的結果?
編輯:
我正在使用xampp的phpMyAdmin接口運行此sql語句
我想通了,這要感謝諾伯特的建議
我用了
update data m, data m0
set m.difference = datediff(date(m.date2),date(m0.date2))/365
where m.id = m0.id
and m.date2 <> '0000-00-00 00:00:00';
我為mysql datediff使用了錯誤的語法,該語法將2個日期作為參數並返回以天為單位的差額。
嘗試使用以下語法更新多個表:
Update data m, data m0
SET m.difference = datediff("hh",m.date2, m0.date1)/8765
WHERE m.id = m0.id
AND m.date2 <> '0000-00-00 00:00:00';
請注意,在SET語句中,您還需要指出要更新的表,否則仍會給您一個很好的警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.