2017-02-15 11 views
1

として私はまだTeradataのにかなり新しいですので、これを許すが、下記の時間(24時間)のTeradataを連結複数の文字列の列の形式のタイムスタンプ

が何であるかのように私は、2つの列の日付と1と4桁のvarchar型のものを持っていますフィールドを連結して読みやすくするために使用しますが、結果を有効なタイムスタンプとして出力して計算を実行できるようにしたいのです。

キャスト(日付フォーマット 'yyyy-mm-dd'としてのSCHEDULE_DATE)|| '' || substr(START_TIME、0,3)|| ':' || substr(START_TIME、2,2)

これは上記のクエリの結果の例です。 2017年1月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 

のようなクエリを実行すると、私は、無効なタイムスタンプ

答えて

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