2017-02-15 2 views
1

Ich bin noch ziemlich neu in Teradata so verzeihen, aber ich habe zwei Spalten eines mit dem Datum und eine mit einer 4-stelligen varchar als die Zeit (24 Stunden)Teradata Concatenate mehrere String-Spalten-Format als Zeitstempel

unten ist, was Ich verwende die Felder, um sie lesbar zu machen, aber ich möchte, dass das Ergebnis als gültiger Zeitstempel ausgegeben wird, damit ich Berechnungen durchführen kann.

Umwandlung (SCHEDULE_DATE als Datumsformat 'JJJJ-MM-TT') || "" || substr (START_TIME, 0,3) || ':' || substr (START_TIME, 2,2)

Dies ist ein Beispiel für die Ergebnisse, die ich aus der obigen Abfrage erhalte. 2017-01-25 13:30

wenn ich die Abfrage wie diese

cast(cast(SCHEDULE_DATE as date format 'yyyy-mm-dd') || ' ' || substr(START_TIME,0,3) || ':' || substr(START_TIME,2,2) as Timestamp) as TESTVALUE 

laufen bekomme ich ungültige Timestamp

Antwort

1
select '2017-02-15' as schedule_date 
     ,'2233'   as start_time 
     ,to_timestamp (schedule_date || start_time,'yyyy-mm-ddhh24mi') as ts 
; 

+---------------+------------+----------------------------+ 
| schedule_date | start_time | ts       | 
+---------------+------------+----------------------------+ 
| 2017-02-15 | 2233  | 2017-02-15 22:33:00.000000 | 
+---------------+------------+----------------------------+ 

P. S.
Die substr Argumente sind falsch.
Teradata verwendet 1 als Startpunkt.


select '1234'     as start_time 
     ,substr(start_time,0,3) as original_1 
     ,substr(start_time,2,2) as original_2 
     ,substr(start_time,1,2) as correct_1 
     ,substr(start_time,3,2) as correct_2 
;  

+------------+------------+------------+-----------+-----------+ 
| start_time | original_1 | original_2 | correct_1 | correct_2 | 
+------------+------------+------------+-----------+-----------+ 
| 1234  | 12   | 23   | 12  | 34  | 
+------------+------------+------------+-----------+-----------+