【问题标题】:SQL Redshift difference in days between 2 timestamps2 个时间戳之间的 SQL Redshift 天数差异
【发布时间】:2018-05-22 14:52:13
【问题描述】:

在我的 Redshift 表中,我有 2 列存储时间戳值:start_date_time 和 end_date_time

我需要找到 start_date_time 和 end_date_time 之间的差异,这样,如果差异是 1 天,那么结果应该是 1。如果 diff 是 12 小时,那么结果应该是 0.5,如果 diff是 8 小时 - 比 0.3333 等。

我该怎么做?我尝试使用 datediff 函数:但这不会返回我想要的:

select datediff(day,'2011-12-31 8:30:00','2011-12-31 20:30:00') as day_diff;

结果为 0。但我需要 0.5,因为相差 12 小时。

【问题讨论】:

    标签: sql datetime amazon-redshift


    【解决方案1】:

    那么只需在几小时内完成并除以 24.0?

    DATEDIFF(HOUR,'2011-12-31 8:30:00','2011-12-31 20:30:00') / 24.0
    

    或者为了更好的粒度,以分钟或秒为单位?

    DATEDIFF(MINUTE,'2011-12-31 8:30:00','2011-12-31 20:30:00') / 1440.0
    
    DATEDIFF(SECOND,'2011-12-31 8:30:00','2011-12-31 20:30:00') / 86400.0
    

    【讨论】:

    • 谢谢!我正在尝试区分 2 个时间戳,如下所示:选择 datediff(month, TIMESTAMP 'Jan 17,2021 00:00:00', TIMESTAMP 'Feb 1,2021 00:00:00')。我希望它返回 0,但得到 1。关于如何在几个月/几年内进行这种差异的任何想法?提前致谢
    • @NI6 请不要使用 cmets 提问,请打开一个新问题,适当时标记人。另外,请检查您的问题是否曾被问过;例如,谷歌给了我这个……stackoverflow.com/questions/67021316/…
    【解决方案2】:

    使用更小的时间单位:

    select datediff(hour, '2011-12-31 8:30:00', '2011-12-31 20:30:00')/24.0 as day_diff;
    

    或者:

    select datediff(minute, '2011-12-31 8:30:00', '2011-12-31 20:30:00')/(24.0 * 60) as day_diff;
    

    或者:

    select datediff(second, '2011-12-31 8:30:00', '2011-12-31 20:30:00')/(24.0 * 60 * 60) as day_diff;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-02
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多