【问题标题】:Subtract between timestamp in Redshift在 Redshift 中的时间戳之间减去
【发布时间】:2016-10-17 12:12:49
【问题描述】:

我发现了一件奇怪的事情。如果一个时间戳值减去另一个,那么 Redshift 将返回一个奇怪的前缀。例如,

从 table_1 中选择 table1.c_timestamp - table1.c_timestamp

期望结果应该是零或类似的东西,因为这两个时间戳值是相同的。 但是,我收到的是“5012369 years 4 mons”,我不知道Redshift是如何计算结果的。

有没有人可以给我一些线索?

谢谢

【问题讨论】:

    标签: amazon-redshift


    【解决方案1】:

    与另一个答案相反, Datediff 并不完全减去,而是计算所选日期部分在两个时间戳之间开始的次数。

    datediff(second, '2018-04-10 00:00:00.001','2018-04-10 00:00:00.999')
    >> 0
    select datediff(second, '2018-04-10 00:00:00.999','2018-04-10 00:00:01.001')
    >> 1
    

    见:Datediff documentation


    编辑:这是我发现如何执行 OP 任务的方式

    SELECT 
    round(((EXTRACT('epoch' FROM TIMESTAMP '2018-05-27 09:59:59.999') - EXTRACT('epoch' FROM TIMESTAMP '2018-05-27 09:59:59.001'))*1000 + EXTRACT(millisecond FROM TIMESTAMP '2018-05-27 09:59:59.999') - EXTRACT(millisecond FROM TIMESTAMP '2018-05-27 09:59:59.001'))::real/1000)
    

    【讨论】:

      【解决方案2】:

      日期时间之间相减的正确方法是:

      select datediff(seconds, table1.c_timestamp, table1.c_timestamp) from table_1

      当然,从自身中减去时间戳没有多大意义,因为这显然会返回 0,但我假设您只是将其作为测试运行。

      【讨论】:

        猜你喜欢
        • 2011-04-02
        • 1970-01-01
        • 2014-04-25
        • 2021-10-24
        • 1970-01-01
        • 1970-01-01
        • 2021-09-24
        • 2012-05-22
        • 1970-01-01
        相关资源
        最近更新 更多