SQL 時間戳轉DateTime類型


  最近在工作中通過接口獲取時間字段為時間戳的值,直接入庫后再頁面查詢時間格式時候需要通過SQL語句將時間戳格式裝換為時間格式進行比較,首先我們需要知道時間戳格式是怎么產生的,: Unix時間戳(Unix timestamp),或稱Unix時間(Unix time)、POSIX時間(POSIX time),是一種時間表示方式,定義為從格林威治時間1970年01月01日00時00分00秒起至現在的總秒數。Unix時間戳不僅被使用在Unix系統、類Unix系統中

  時間類型轉換為時間戳會有10位和13位兩種區別,10 位的時間戳的源時間格式為 yyyy-MM-dd hh:MM:ss .000  毫秒位數為三個零,而13位的時間戳格式是包含了毫秒數的。

  10位的時間戳格式在SQL中轉換為普通時間格式的方法:DATEADD(s, Unix timestamp+8*3600, '1970-01-01 00:00:00')

  13 位的時間戳轉換為普通時間格式不能直接使用這種方式,所以在這里我的做法是截取前邊10位為無毫秒的時間格式的時間戳,所以寫法:

    DATEADD(S,CAST( SUBSTRING(CreateTime,1,10) AS INT ) + 8 * 3600,'1970-01-01 00:00:00 ')  

  在SQL中普通時間格式轉為時間戳格式:DATEDIFF(s, '1970-01-01 00:00:00', time)  

在不同的語言中實現的方式不同,參見 http://tool.chinaz.com/Tools/unixtime.aspx    


免責聲明!

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



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