日期或字符串类型为bigint

lsmepo6l  于 2021-06-01  发布在  Hadoop
关注(0)|答案(3)|浏览(422)

如何将“2018-03-31”这样的日期转换为 bigintHive ?

0s0u357o

0s0u357o1#

戈登说了什么。
如果您有javascript时间戳,请记住它们只是自 1970-01-01T00:00:00.000Z 在64位浮点中。它们可以很容易地转换成bigint。如果你把时间戳存储在 DATETIME(3) 或者 TIMESTAMP(3) 数据类型,使用 UNIX_TIMESTAMP(date)*1000 获取有用的bigint毫秒值。
如果你只关心日期(而不是时间),你可以使用 TO_DAYS() 获取自 0000-01-01 (一)公历;如果你是一个古代历史学家,并且关心儒略历法,这种方法就有问题。如果你不知道我在说什么,你不必担心。)但是int对于这些日数就足够了;bigint太过分了。

piv4azn7

piv4azn72#

你可以用 unix_timestamp 函数,该函数将日期或时间戳转换为unix时间戳并作为 bigint .
查询示例:

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

输出:

  1. +--------------------------------------+
  2. |unix_timestamp(2018-03-31, yyyy-MM-dd)|
  3. +--------------------------------------+
  4. | 1522434600|
  5. +--------------------------------------+

注意:在Hive1.2.0中测试了此代码

dw1jzc5e

dw1jzc5e3#

你可以做:

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

这将生成一个表示日期的整数。
如果需要unix时间戳(自1970-01-01起的秒数),则:

  1. select unix_timestamp(date)

相关问题