SQL SERVER-時間戳(timestamp)與時間格式(datetime)互相轉換


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  --普通時間轉換成時間戳 (含毫秒)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM