Как использовать Redshift DATEDIFF? - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь добавить расчет разницы дат в SQL-запрос Redshift:

SELECT 
   client,
   session,
   person_id,
   min(event_start) as "session_start",
   max(event_finish) as "session_finish",
   sum (case when event_type = 'execute-query-action-1'  then 1 else 0 end) as "Type1 reports run" ,
   sum (case when event_type = 'execute-query-action-2'  then 1 else 0 end) as "Type 2 reports run" ,
   DATEDIFF(MINUTE,session_start,session_finish) as "session_duration_minutes"
FROM usage_log
group by client,person_Id,session

... и я получаю сообщение об ошибке:

функция pg_catalog.date_diff («неизвестно», метка времени с часовым поясом, метка времени с часовым поясом) не существует. СОВЕТ: ни одна функция не соответствует заданному имени и типу аргумента. Возможно, вам придется добавить явные приведения типов.

Есть предложения?

1 Ответ

0 голосов
/ 13 сентября 2018

Функция DATEDIFF задокументирована как:

DATEDIFF ( datepart, {date|timestamp}, {date|timestamp} )

Таким образом, она может принимать либо дату , либо отметку времени .

Ваш запрос передает метку времени с часовым поясом , следовательно, ошибка.

Следовательно, вы можете использовать:

DATEDIFF(MINUTE, session_start::timestamp, session_finish::timestamp)
...