在我的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小时。
答案 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;