2 个时间戳之间的 SQL Redshift 天数差异

Posted

技术标签:

【中文标题】2 个时间戳之间的 SQL Redshift 天数差异【英文标题】:SQL Redshift difference in days between 2 timestamps 【发布时间】: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 小时。

【问题讨论】:

【参考方案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 提问,请打开一个新问题,适当时标记人。另外,请检查您的问题是否曾被问过;例如,谷歌给了我这个……***.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;

【讨论】:

以上是关于2 个时间戳之间的 SQL Redshift 天数差异的主要内容,如果未能解决你的问题,请参考以下文章

ansi sql如何选择自表中最早时间戳以来的天数

计算没有周末的2个日期之间的天数[重复]

计算BQ中不同格式的两个时间戳之间的天数

VBA 锻炼两个时间戳之间的天数、小时数、分钟数或秒数?

Impala SQL - 如何计算时间戳之间的月份?

SQL (RedShift):从时间戳列中为每个月选择不同的日期