MSSQL 日期時間轉換-正確性

MSSQL如何正確轉換日期時間(UnixTime轉成固定格式的時間)

UNIX time 轉成 固定格式 yyyy/mm/dd HH:mm:ss

用錯方法取得的DataTime就會錯誤

MSSQL 日期時間轉換問題

如何正確轉換日期時間

用錯方法取得的DataTime就會錯誤

 


SQL語法查詢

登入帳號:XXXXXX
查看一下時間
二個時間對不上~

SQL語法如下:
select m.loginid,m.username,m.email,
    CONVERT(char,CAST(DATEDIFF(d,'19000101','19700101') +
        (CAST(t.starttime AS real ) / 86400000) + (0.3333) AS datetime),120) AS starttime1,
    t.starttime,a.name,t.keyword,t.priority,t.ExeID,t.tskid,a.artid  
from task t
JOIN mem_geninf m ON t.ExeID=m.memid
JOIN Pro_OprArt p ON t.proid=p.proid
JOIN Art_GenInf a ON p.artid=a.artid
where t.rootid!=t.tskid
and t.state in ('running','ready','suspended')
and m.invisible='false' and m.email<>'' and m.mainroleid <>''
and m.loginid = 'XXXXXX'
order by t.starttime
 
SQL語法說明如下圖:
台灣時間GMT+8

 

結果發現問題出在0.3333這個值

如下圖:
因為1551755562901 / 86400000 得到的結果有小數位數9位,+0.333的小數位數也要9位
這樣得到的值才會相同

正確用法如下圖:
修改後SQL語法: