Próbuję oddać istniejącą zmienną Date jako sygnaturę czasową i dodać godziny i minuty z innej zmiennej Time, aby uzyskać końcową zmienną formatu mm/dd/rrrr gg:mm:00.

Bieżący wiersz zapytania, w którym występują błędy, to:

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

Nie mogę jednak znaleźć, co jest nie tak. Pozbyłem się funkcji podciągów, aby upewnić się, że nie było w tym nic złego, ale nie mogę rzucić ArrTm jako interwału nawet samodzielnie. Czy to coś z formatem zmiennych? Uruchamiam to w Teradata.

DepDt to data. ArrTM jest zmienną czasu.

0
A.Cod 6 listopad 2018, 01:27
Zamiast przesyłać, możesz wypróbować różne funkcje konwersji czasu/daty.
 – 
Tom Drake
6 listopad 2018, 01:43
Zastanawiałem się nad tym ... czy można to zrobić również z istniejącymi zmiennymi? czy tylko na stałe zakodowane daty/godziny?
 – 
A.Cod
6 listopad 2018, 01:48
Spróbuj tego: wybierz znacznik czasu(curdate());
 – 
Tom Drake
6 listopad 2018, 01:57
@TomDrake: To jest Teradata, a nie MySQL.
 – 
dnoeth
6 listopad 2018, 02:06
Jakoś to przegapiłem. Ale Teradata implementuje podobne funkcje daty/czasu, z inna składnia.
 – 
Tom Drake
6 listopad 2018, 02:10

1 odpowiedź

Najlepsza odpowiedź

Nie możesz zastosować substr na Time, musisz najpierw jawnie rzucić go na VarChar:

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

Ale jest prostszy sposób na uzyskanie wyniku:

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
2
dnoeth 6 listopad 2018, 02:14
To działa! bardzo dziękuję. Czy mógłbyś wyjaśnić, co „* Interwał '1' godzina/minuta” robi dla mojej ciekawości?
 – 
A.Cod
6 listopad 2018, 18:10
1
Cóż, EXTRACT zwraca liczbę (której nie można dodać do znacznika czasu), ale po pomnożeniu jej przez '1' godzina/minuta zmienia się na INTERWAŁ (który można dodać)
 – 
dnoeth
6 listopad 2018, 18:15