В моей таблице Redshift у меня есть 2 столбца, в которых хранятся значения временных меток: start_date_time и end_date_time.
Мне нужно найти разницу между start_date_time и end_date_time, так что, если разница составляет 1 день, результат должен быть 1. Если разница составляет 12 часов, то результат должен быть 0,5, если разница составляет 8 часов - чем 0,3333 и т. д.
Как я могу это сделать? Я попытался использовать функцию dateiff: но это не вернет то, что я хотел:
select datediff(day,'2011-12-31 8:30:00','2011-12-31 20:30:00') as day_diff;
Будет 0. Но мне нужно 0,5, потому что разница составляет 12 часов.


Тогда просто сделайте это в часах и разделите на 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
Используйте меньшую единицу времени:
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;