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

时间:2018-05-22 14:52:13

标签: sql datetime amazon-redshift

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

我需要找到 start_date_time和end_date_time 之间的区别,这样,如果差异为1天,则结果应为1.如果diff为12小时,则结果应为0.5,如果差异是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小时。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

使用较小的时间单位:

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;