最近在工作中通過接口獲取時間字段為時間戳的值,直接入庫后再頁面查詢時間格式時候需要通過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