如何将“ 2018-03-31”之类的日期转换为bigint
中的Hive
?
答案 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中测试了此代码