2017-08-11 55 views
-1

好的,我看到了這個post,並嘗試了所建議的內容,但這似乎不適用於我。感謝幫助!謝謝!teradata:將smallint轉換爲時間

以下是各列數據類型:

:COLUMN_NAMES col_dt [DATE]col_tm [SMALLINT]

數據樣本:

col_dt: 2017-08-10 col_tm: 1,630

這裏是我的代碼片段。我想結合了列到一個使用下面的代碼:

(trim(col_dt) || ' ' || right('0' + convert(varchar(10), col_tm/100),2) + ':' + right('0' + convert(varchar(10),col_tm%100),2)) as col_dtmstp,

+0

語法錯誤:預期的東西之間的「||」和'right'關鍵字 –

回答

1

你可以施放col_dt的時間戳,導致半夜,然後雙擊投col_tm到特林第一,然後到interval

Cast(col_dt AS TIMESTAMP(0)) 
+ Cast(Trim(col_tm (Format '99:99')) AS INTERVAL HOUR TO MINUTE) 
+0

謝謝@dnoeth。你提供的解決方案工作。然而,我在問題(我的道歉)中錯誤地提到col_date格式有'YYYY-MM-DD';取而代之的是'dd/mm/yyyy'。我所有的其他列都是'YYYY-MM-DD'格式,我更喜歡col_date以相同的方式顯示。 –

+0

@ k.learn:當'col_dt'是'date'時,不需要做任何事情,因爲時間戳的默認格式已經是'yyyy-mm-dd hh:mi:ss' – dnoeth

0

在你提到的職位,他們所使用的是沒有內置功能的Teradata SQL right功能。您可以使用CAST函數。

以下是將在數據類型TIMESTAMP中生成所需結果的查詢。

SELECT Cast(Trim('2017-08-10' 
      || ' ' 
      ||Trim(Cast(1630/100 AS CHAR(10))) 
      || ':' 
      || Trim(Cast(1630 MOD 100 AS CHAR(10))) 
      || ':00') AS TIMESTAMP(0) Format 'yyyy-mm-ddBhh:mi:ss'); 

它成功通過Teradata SQL Assistant和bteq測試。您可以使用type[expression]函數確認其數據類型。