参考文章:https://blog.csdn.net/a805814077/article/details/115014708
概念:
时间戳
也就是timestamp,是hive中的一种数据类型,与unix_timestamp不是一个概念
unix_timestamp
可以直接将timestamp转成毫秒(即1970-1-1至今的秒), 也可以将字符串转成毫秒,但需要指定字符串格式
from_unixtime
可以将unix_timestamp转成timestamp,也就是时间戳
to_utc_timestamp
可以将13位的unix_timestamp(精确到毫秒)转成时间戳
1.字符串转timestamp
select timestamp('2022-01-02 17:50:20.123')
select timestamp('2022-01-02 17:50:20')
select timestamp('2022-01-02')
2.字符串转unix_timestmap
方法1: 直接使用unix_timestamp()
select unix_timestamp('2022-01-02 17:50:20.123', "yyyy-MM-dd HH:mm:ss.SSS")
方法2: 先使用timestamp, 再使用unix_timestamp ( 有点脱裤子放屁的感觉… )
select unix_timestamp(timestamp('2022-01-02 17:50:20.123'));
3. 10位unix_timestamp转成timestamp
select from_unixtime(1641145820)
4. 13位unix_timestamp转成timestamp
select to_utc_timestamp(1641145820000,'UTC')
5.unix_timestamp转成时间格式字符串 ( 基本不会用吧… )
select cast(from_unixtime(1641145820) as string)