Недопустимая операция SQL для DateTime или Interval при приведении часа / минуты к существующей метке времени - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь привести существующую переменную Date в качестве отметки времени и добавить часы и минуты из другой переменной Time, чтобы получить конечную переменную в формате мм / дд / гггг чч: мм: 00.

Текущая строка запроса с ошибками:

  cast(DepDt as timestamp) + cast(substr(ArrTm, 1, 2) as interval hour) + cast(substr(ArrTm, 3, 2) as interval minute) as Arrv_DTML

Хотя я не могу понять, что не так. Я избавился от функций подстроки, чтобы убедиться, что в этом нет ничего плохого, но я не могу представить ArrTm как интервал даже сам по себе. Это что-то с форматом переменных? Я запускаю это в Teradata.

DepDt - это дата. ArrTM - это переменная времени.

1 Ответ

0 голосов
/ 06 ноября 2018

Вы не можете применить substr к Time, сначала вы должны явно привести его к VarChar:

Cast(DepDt AS TIMESTAMP(0))+
+ Cast(Substr(Cast(ArrTm AS VARCHAR(8)), 1, 5) AS INTERVAL HOUR TO  MINUTE) 

Но есть более простой способ получить ваш результат:

Cast(DepDt AS TIMESTAMP(0))                           -- date to Timestamp
+ (Extract(HOUR From ArrTm) * INTERVAL '1' HOUR)      -- hour to Interval
+ (Extract(MINUTE From ArrTm) * INTERVAL '1' MINUTE)  -- minute to Interval
...