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.
1 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
Podobne pytania
Nowe pytania
sql
Structured Query Language (SQL) to język służący do wykonywania zapytań w bazach danych. Pytania powinny zawierać przykłady kodu, strukturę tabeli, przykładowe dane i znacznik używanej implementacji DBMS (np. MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 itp.). Jeśli Twoje pytanie dotyczy wyłącznie konkretnego DBMS (używa określonych rozszerzeń / funkcji), użyj zamiast tego tagu tego DBMS. Odpowiedzi na pytania oznaczone tagiem SQL powinny używać standardu SQL ISO / IEC.