今天在工作時,遇到一個問題,客戶那裡的table,有一個存時間的欄位,因為之前程式的問題,寫入的格式是錯誤
之前是寫入 ex: 9:32:1,雖然用看的就知道是9點32分1秒,但對於sql server要比對時間資料的判斷會有問題
正確的應寫入 ex: 09:32:01,這樣在比對的時候才會對,改了程式之後,寫入的格式就對了
但...之前的資料怎麼辦呢?
可以使用 datename各取時,分,秒,然後再組起來就可以了
以下為更新語法
update table1
set rec_time=
case when
--判斷"時" ,是否只有1位數,是的話,就補0
len(datename(hh,rec_time))=1 then '0'+datename(hh,rec_time) else datename(hh,rec_time)end +':'+
case when
--判斷"分" ,是否只有1位數,是的話,就補0
len(datename(mi,rec_time))=1 then '0'+datename(mi,rec_time) else datename(mi,rec_time)end +':'+
case when
--判斷"秒" ,是否只有1位數,是的話,就補0
len(datename(ss,rec_time))=1 then '0'+datename(ss,rec_time) else datename(ss,rec_time)end
where Convert(char,Rec_date,111)='2008/12/27'
如果你有欄位是只放日期,想要組合時間欄位的話
Ex:
Col1 |
col2 |
2008/12/31 00:00:00 |
09:32:11 |
那就要用
Convert(char,col1,111)+' '+col2,這樣sql server才不會把col2的秒進位到分
組起來的結果為 2008/12/31 09:32:11
如果不是用Convert(char,col1,111),而是直接組的話,例如col1+' '+col2
組起來的結果會2008/12/31 09:33:00,這樣就錯了哦
所以要注意
正確的組法
Select Convert(char,col1,111)+' '+col2 from table1
留言列表