как рассчитать разницу дат и получить результат в днях?

Я пытаюсь рассчитать разницу между двумя датами в dbeaver, подключенном к Apache Drill.

ex:

date 1  1/27/2019
date 2  2/01/2019

вывод 1 по дням вывод 2 по неделям


person Surya    schedule 28.01.2019    source источник
comment
Пробовали конвертировать оба в временные метки?   -  person Ishara Abeykoon    schedule 28.01.2019
comment
У вас есть ссылка о функциях даты и времени в Drill? Вы можете прочитать его, а затем легко создать все эти SQL-запросы. Все ваши случаи очень просты, и они упоминаются в документах Drill и в других документах SQL: drill.apache.org/docs/date-time-functions-and-arithmetic/   -  person Vitalii Diravka    schedule 28.01.2019
comment
Я попробовал timestampdiff, но не смог получить вывод, получив ошибку типа данных DOUBLE в dbeaver.   -  person Surya    schedule 28.01.2019
comment
Я вижу, что основная проблема связана с dbeaver.   -  person Surya    schedule 28.01.2019
comment
вот мой запрос, выберите PO_Received, DateSubmitted, DateReleased, TIMESTAMPDIFF (неделя, cast (DateSubmitted as TIMESTAMP), cast (DateReleased as TIMESTAMP)) из cotm.views.REACTRequests limit 10   -  person Surya    schedule 29.01.2019
comment
ОШИБКА: Ошибка SQL: СИСТЕМНАЯ ОШИБКА: AssertionError: todo: реализовать синтаксис SPECIAL(Reinterpret(-(CAST(TO_TIMESTAMP(/(CAST($2):DOUBLE, 1000))):TIMESTAMP(0), CAST(TO_TIMESTAMP(/(CAST ($1): ДВОЙНОЙ, 1000))): ВРЕМЯ (0))))   -  person Surya    schedule 29.01.2019


Ответы (2)


Вы пробовали datediff()?

select datediff(date1, date2) as days_between
       floor(datediff(date1, date2) / 7) as weeks_between
person Gordon Linoff    schedule 28.01.2019
comment
Это должен быть ответ по умолчанию - person Vitalii Diravka; 28.01.2019

если дата в строковом формате -

select datediff(
(from_unixtime(unix_timestamp(enddate, dateformat), dateformat)) -
(from_unixtime(unix_timestamp(startdate, dateformat), dateformat)));

Ex - hive> select datediff(from_unixtime(unix_timestamp('2019-01-28', 'yyyy-MM-dd'), 'yyyy-MM-dd'), from_unixtime(unix_timestamp('2019-01-27', 'yyyy-MM-dd'), 'yyyy-MM-dd'));

person Vijiy    schedule 28.01.2019