如何在Hive
中将类似"2018-03-31"的日期转换为bigint
?
如果您有Javascript时间戳,请记住,它们只是64位浮点中1970-01-01T00:00:00.000Z
之后的毫秒数。它们可以很容易地转换为BIGINT。如果要将这些时间戳存储在DATETIME(3)
或TIMESTAMP(3)
数据类型中,请使用UNIX_TIMESTAMP(date)*1000
获取有用的BIGINT毫秒值。
如果你只关心日期(而不是时间(,你可以使用TO_DAYS()
来获得自0000-01-01
以来的整数天数(在公历中;如果你是一名古代历史学家,关心儒略历,这种方法会有问题。如果你不知道我在说什么,你不必担心。(但INT足以满足这些天数;BIGINT太夸张了。
你可以做:
select year(date) * 10000 + month(date) * 100 + day(date)
这将生成一个表示日期的整数。
如果您想要Unix时间戳(自1970-01-01以来的秒数(,则:
select unix_timestamp(date)
您可以使用unix_timestamp
函数,该函数将日期或时间戳转换为Unix时间戳并返回为bigint
。
示例查询:
select unix_timestamp('2018-03-31', 'yyyy-MM-dd');
输出:
+--------------------------------------+
|unix_timestamp(2018-03-31, yyyy-MM-dd)|
+--------------------------------------+
| 1522434600|
+--------------------------------------+
注意:在配置单元1.2.0 中测试了此代码