日期或字符串类型为bigint



如何在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 中测试了此代码

最新更新