時間戳Unix timestamp
(1)定義
Unix時間戳(Unix timestamp),或稱Unix時間(Unix time)、POSIX時間(POSIX time),是一種時間表示方式,定義為從格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至現在的總秒數。Unix時間戳不僅被使用在Unix 系統、類Unix系統中,也在許多其他操作系統中被廣泛采用。
目前相當一部分操作系統使用32位二進制數字表示時間。此類系統的Unix時間戳最多可以使用到格林威治時間2038年01月19日03時14分07秒(二進制:01111111 11111111 11111111 11111111)。其後一秒,二進制數字會變為10000000 00000000 00000000 00000000
(2)10位與13位時間戳
a.產生
java的date默認精度是毫秒,也就是說生成的時間戳就是13位的,而像c++或者php生成的時間戳默認就是10位的,因為其精度是秒。
【1秒=1000毫秒,1毫秒=1000微秒】
b.轉換方法
第一種:通過substring方法,將13位的時間戳最後三位數字截取
第二種:將13位時間戳除以1000 -- 此方法更可取
HIVE/SPARK:
select unix_timestamp() -- 當前時間的時間戳,10位
select from_unixtime(1548654394172/1000) --時間精確到秒:2019-01-28 13:46:34
PRESTO:
select to_unixtime(current_timestamp) -- 當前時間的時間戳,長度14位(包含小數點)
select from_unixtime(1548654394172/1000) --時間會精確到毫秒:2019-01-28 13:46:34.000
參考鏈接:
什麽是時間戳:http://www.cnblogs.com/yangqi/archive/2010/07/16/1778675.html
UNIX時間戳:https://baike.baidu.com/item/unix%E6%97%B6%E9%97%B4%E6%88%B3/2078227
時間戳Unix timestamp