【问题标题】:hive : how to substract 1 second of a given timestamp蜂巢:如何减去给定时间戳的 1 秒
【发布时间】:2019-02-28 20:42:02
【问题描述】:

我想从 hive 中的给定时间戳中减去 1 秒。当我尝试将 1 秒添加到给定的时间戳时,它运行良好,但减法运行不佳。

下面的语句给了我正确的加法结果

select from_unixtime(unix_timestamp('2016-11-06 01:00:00.000','yyyy-MM-dd HH:mm:ss.SSS'),'yyyy-MM-dd HH:mm:ss.SSS') , from_unixtime(unix_timestamp('2016-11-06 01:00:00.000','yyyy-MM-dd HH:mm:ss.SSS') + 1,'yyyy-MM-dd HH:mm:ss.SSS')

但是对于减法我没有得到正确的结果使用下面

select from_unixtime(unix_timestamp('2016-11-06 01:00:00.000','yyyy-MM-dd HH:mm:ss.SSS'),'yyyy-MM-dd HH:mm:ss.SSS') , from_unixtime(unix_timestamp('2016-11-06 01:00:00.000','yyyy-MM-dd HH:mm:ss.SSS') - 1,'yyyy-MM-dd HH:mm:ss.SSS') 

我得到的减法结果

2016-11-06 01:00:00.000 2016-11-06 01:59:59.000

但预期的结果是

2016-11-06 01:00:00.000 2016-11-06 12:59:59.000

【问题讨论】:

  • 将您获得的结果添加到您的帖子中

标签: hive


【解决方案1】:

这对我有用:

from_unixtime(unix_timestamp(ref.rptg_end_ts,'yyyy-MM-dd HH:mm:ss') + (-1),'yyyy-MM-dd HH:mm:ss') ref.rptg_end_ts

【讨论】:

    【解决方案2】:

    “美国和加拿大:DST 将于 2016 年 11 月 6 日结束 ...

    美国、加拿大和墨西哥北部边境城市的大部分地区 夏令时 (DST) 将于 2016 年 11 月 6 日星期日结束。
    DST 于 11 月星期日结束 2016 年 6 月 6 日

    从 02:00(凌晨 2 点)到 当地时间 01:00(凌晨 1 点)。”

    https://www.timeanddate.com/news/time/usa-canada-end-dst-2016.html

    【讨论】:

    • 问题是我们能否在加减 1 秒时消除夏令时部分?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 1970-01-01
    • 2012-10-04
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多