日期或字符串类型为bigint

时间:2018-11-09 11:11:26

标签: sql datetime hadoop hive

如何将“ 2018-03-31”之类的日期转换为bigint中的Hive

3 个答案:

答案 0 :(得分:2)

戈登怎么说。

如果您有Javascript时间戳记,请记住,它们只是自1970-01-01T00:00:00.000Z以来在64位浮点中的毫秒数。它们可以轻松转换为BIGINT。如果要将这些时间戳记存储在DATETIME(3)TIMESTAMP(3)数据类型中,请使用UNIX_TIMESTAMP(date)*1000获得有用的BIGINT毫秒值。

如果您只关心日期(而不是时间),则可以使用TO_DAYS()获得自0000-01-01起的整数天数(在公历中;如果您是古代和关心的历史学家)关于朱利安历法,这种方法有问题。如果您不了解我在说什么,就不必担心。 BIGINT是矫kill过正。

答案 1 :(得分:1)

您可以这样做:

select year(date) * 10000 + month(date) * 100 + day(date)

这将产生一个代表日期的整数。

如果要使用Unix时间戳(自1970年1月1日以来的秒数),则:

select unix_timestamp(date)

答案 2 :(得分:1)

您可以使用unix_timestamp函数将日期或时间戳转换为Unix时间戳并以bigint的形式返回。

示例查询:

select unix_timestamp('2018-03-31', 'yyyy-MM-dd');

输出:

+--------------------------------------+
|unix_timestamp(2018-03-31, yyyy-MM-dd)|
+--------------------------------------+
|                            1522434600|
+--------------------------------------+

注意:在Hive 1.2.0中测试了此代码