2014年7月1日 星期二

[Oracle SQL]使用update指定修改日期欄位

最近遇到日期轉換錯亂的問題

因為程式中在還沒完全改成民國年的情況下就執行

會導致儲存到Oracle上之後

出現3925年(1911+2014)這種結果

但要把時間改回2014年資料有上千筆當然不可能一個一個去改

當然還是要靠update的指令

但問題來了

如果你直接去用to_date改日期

最後的結果可能是變成2014/07/01 00:00:00

原本的時分秒可能因為沒指定被蓋掉

那麼要如何只改年不動到月日時分秒呢?

後來我問到的方法如下

update Login k set k.date=ADD_MONTHS(k.date,-1911*12)
where to_char(k.date,'yyyy')='3925';

這段的意思是說我將現有的時間減掉1911*12個月

至於where的部份必須要用to_char取得年

因為如果是用to_date的話會變成3925/07/01 00:00:00這種結果

當然你的時分秒不會剛好是00:00:00

所以也不會找到符合的結果

沒有留言:

張貼留言