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 天数差异的主要内容,如果未能解决你的问题,请参考以下文章