时间戳是数据库常用的存放日期的形式之一,表示从 UTC 时间’1970-01-01 00:00:00’开始到现在的秒数,与常规时间格式如 ‘2020-09-01 00:00:00’可以相互转换。时间戳分为10位的时间戳和13位的时间戳,10位就是存放的秒数,13位就是存放的毫秒数。
(1)unix_timestamp
a. 语法:unix_timestamp()
返回值:返回当前时间戳
举例:hive>select unix_timestamp();
>1598951117
b. 语法:unix_timestamp(string data)
返回值:返回data对应的时间戳,data的格式必须为yyyy-MM-dd HH:mm:ss
举例:hive>select unix_timestamp('2020-09-01 09:00:00');
>1598922000
c. 语法:unix_timestamp(string date, string format)
返回值:返回data对应的时间戳,date 格式由 format 指定。
(2)from_unixtime
语法:from_unixtime(int/bigint timestamp)
返回值:返回timestamp对应的日期,格式为yyyy-MM-dd HH:mm:ss
举例:hive>select from_unixtime(1598951117);
>2020-09-01 17:05:17
对于13位的时间戳,转换前需要除以1000
举例:hive>select from_unixtime(cast(1598951117034/1000 as bigint),'yyyy-MM-dd HH:mm:ss')
>2020-09-01 17:05:17
举例:hive>select from_unixtime(ceil(1598951117034/1000),'yyyy-MM-dd HH:mm:ss')
>2020-09-01 17:05:17
本文详细介绍了数据库中时间戳的两种形式及其转换方法,包括10位和13位时间戳的含义,如何使用Hive的unix_timestamp和from_unixtime函数进行时间戳与日期之间的相互转换。
1万+





