Разница в днях SQL Redshift между двумя временными метками

В моей таблице 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 часов.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
5 214
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Тогда просто сделайте это в часах и разделите на 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;

Другие вопросы по теме