【问题标题】:Hive timestamp queryHive 时间戳查询
【发布时间】:2017-07-02 01:23:23
【问题描述】:

我创建了一个具有以下格式的时间戳列(数据类型为时间戳)的配置单元表:

2017-01-23 21:23:17.261456

但是,当我这样选择时。它不能正常工作。它将选择时间戳之后的日期。该列应该是字符串还是我使用错误的查询?

select * from example where time_created < '2017-01-01 22:30:57.375117'

【问题讨论】:

  • 时间戳文字不适用于毫秒,更糟糕的是微秒...尝试使用 '2017-01-01 22:30:57'cast('2017-01-01 22:30:57' as TimeStamp)cast('2017-01-01 22:30:57.375' as TimeStamp) 等等等来放大问题。跨度>

标签: sql hadoop casting hive timestamp


【解决方案1】:

我遇到了同样的问题:字符串和时间戳之间的比较不是自动完成的。 这对我有用:

select * from example 
         where unix_timestamp(time_created, 'yyyy-MM-dd HH:mm:ss.SSS') < 
               unix_timestamp('2017-01-01 22:30:57.375117','yyyy-MM-dd HH:mm:ss.SSS')

【讨论】:

    【解决方案2】:

    您需要更改过滤器的数据类型,例如时间戳到字符串比较可能是问题所在。尝试使用 from_utc_timestamp('2017-01-01 22:30:57.375117') 或 from_unix() 命令。

    【讨论】:

      【解决方案3】:
      select from_unixtime(unix_timestamp('2015-12-23 22:30:57.375' ,'yyyy-MM-dd HH:mm:ss.SSS')) ;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-09
        • 1970-01-01
        • 2017-09-07
        • 2023-03-23
        • 2015-12-09
        相关资源
        最近更新 更多