SQL SERVER-時間戳(timestamp)與時間格式(datetime)互相轉換
轉自:https://www.cnblogs.com/JohnABC/p/3725631.html
【2019-01-14 SQLServer幫助中明確表示,timestamp數據類型只是遞增的數字,不保留日期或時間。原文如下:
公開數據庫中自動生成的唯一二進制數字的數據類型。rowversion 通常用作給表行加版本戳的機制。存儲大小為 8 個字節。rowversion 數據類型只是遞增的數字,不保留日期或時間。若要記錄日期或時間,請使用 datetime2 數據類型。
timestamp 的數據類型為 rowversion 數據類型的同義詞,並具有數據類型同義詞的行為。
】
SQL里面有個DATEADD的函數。時間戳就是一個從1970-01-01 08:00:00到時間的相隔的秒數。所以只要把這個時間戳加上1970-01-01 08:00:00這個時間就可以得到你想要的時間了select DATEADD(second,1268738429 + 8 * 60 * 60,'1970-01-01 00:00:00')
注解:北京時間與GMT時間關系
1.GMT是中央時區,北京在東8區,相差8個小時
2.所以北京時間 = GMT時間 + 八小時
例如:
SELECT DATEADD(S,1160701488,'1970-01-01 08:00:00') --時間戳轉換成普通時間
SELECT DATEDIFF(S,'1970-01-01 08:00:00', GETDATE()) --普通時間轉換成時間戳
select (cast(GETDATE() as float) - CAST( cast('1970-01-01 8:00' as datetime) as float)) * 86400000 --普通時間轉換成時間戳 (含毫秒)