2017-02-15 41 views
1

Я все еще достаточно новое для Teradata так простить это, но у меня есть две колонки одна с датой и один с 4 цифрами VARCHAR как время (24-часовой)Teradata Concatenate множественным формат столбцы со строками, как метку времени

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

cast (SCHEDULE_DATE как формат даты "yyyy-mm-dd ') || '' || substr (START_TIME, 0,3) || ':' || substr (START_TIME, 2,2)

Это пример результатов, полученных из приведенного выше запроса. 2017-01-25 13:30

, когда я выполнить запрос, как этот

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

Я получаю недействительные TIMESTAMP

ответ

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.
Аргументы substr являются неправильными.
Teradata использует 1 как старт точка.


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  | 
+------------+------------+------------+-----------+-----------+