SQL Redshift разница в днях между 2 отметками - PullRequest
0 голосов
/ 22 мая 2018

В моей таблице 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 голосов
/ 22 мая 2018

Используйте меньшую единицу времени:

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;
0 голосов
/ 22 мая 2018

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