2015-05-14 46 views
0

我有一個Excel日誌格式將日期加載到不是一致格式的表中,因此當我們將日期複製到另一個表時將其轉換爲時間戳更具挑戰性。Excel日期格式到DB2中的時間戳SQL

實施例的日期:

  1. 2015年5月1日
  2. 2015年5月15日
  3. 2015年12月1日
  4. 2015年12月15日

我需要將其轉換爲時間戳格式。首先,我只是試圖解析並將日期連接成像時間戳格式化的字符類型。

的時間戳格式必須是:YYYY-MM-DD HH24:MM:SS

我們的DB2實例是很舊,不接受以下功能: INSTRLOCATE_IN_STRING

但是,它不會接受:LOCATE

我因爲我在參數中指定了實際的數字,而不是使用可以處理不同日期格式的函數,所以代碼爲4種日期格式中的2種工作。修改查詢,在顯示的不良表之後,我的結果是:

OLD日期 - 新的日期

2015年4月3日 - 2015年4月3日/ 00:00:00

二零一五年三月三十零日 - 手繪POP練習00:00:00

12/31/2015 - 2015-01-/3 00:00:00

2015年12月3日 - - 2015-01-/3 00:00:00

上表中的「 - 」表示差異表中的nt列。

我當前的代碼是:

SELECT 
STARTDATE 
, RIGHT(LTRIM(RTRIM(STARTDATE)), 4)  --YEAR 
|| '-' 
|| RIGHT('00' || SUBSTR(STARTDATE, 1, LOCATE(STARTDATE, '/', 1)+1), 2) --MONTH 
|| '-' 
|| LEFT(SUBSTR(STARTDATE, 3, LOCATE(STARTDATE, '/', 1)+2) || '00', 2) --DAY 
|| ' 00:00:00' AS STARTDATE 
FROM SCHEMA1.TABLE1 

誰能幫助?

  • DB2/NT SQL08016
  • IBM數據服務器驅動程序JDBC和SQLJ 4.13.127

回答

0

爲了實現服用CHAR數據類型的日期,從多個日期格式到了所需的時間戳數據類型,所有是:

SELECT TIMESTAMP(STARTDATE, 「00:00:00」) FROM SCHEMA1.TABLE1

0

一個選擇是讓DB2 IMPORT或:

我們的DB2版本信息LOAD命令做日期格式轉換。在你的文件加載到表,確定相應的列有DATE數據類型,然後發出這樣的DB2命令:

import from yourfile of del modified by dateformat="MM/DD/YYYY" 
    replace into yourtable (column1, column2, ...); 

在此之後的值將是一個DATE - 那就是如何無論如何,您應該存儲日期,而不是字符串,並且您可以使用VARCHAR_FORMAT()函數將其格式化爲您的喜好。

+0

我得到一個錯誤:在filetmod中,以字符串「'MM/DD/YYYY'」開頭的用戶指定格式「DATEFORMAT」無效。 我使用的代碼是使用IMPORT語法使用「METHOD P」。 – Coogie7

+0

顯示您使用的確切命令。你在格式中使用了單引號嗎?此外,您可能想將其更改爲'「M/D/YYYY」'來解釋一位數值。 – mustaccio

+0

我將它改爲雙引號,但沒有出現錯誤,但日期的格式是MM/DD/YYY和M/DD/YYYY和M/D/YYYY的混合格式。這是由於包含在日期中的前導零。導入到臨時表中的數據將被複制到數據類型爲TIMESTAMP的字段中。有沒有辦法直接將其更改爲Timestamp? – Coogie7