2016-09-21 58 views
0

我有一個字符串值如此的列05.2015SQL CONVERT字符串到目前的問題

我需要得到一個日期值,列於第一2個字符的月份和日子總是一號的格式...

所以在這個例子中這將是2015年1月5日。 ..或2015-05-01 ..取決於db。

我試圖

select CONVERT(VARCHAR(7),"String_Date_column",0) from TABLE; 

,但我收到此錯誤:

"No authorized routine named "CONVERT" of type "FUNCTION" having compatible arguments was found.. SQLCODE=-440, SQLSTATE=42884, DRIVER=3.69.56 ".

我上dashDB運行。

+1

它看起來像您需要諮詢[日期時間標量函數文檔】(http://www.ibm.com/support/knowledgecenter/en/SS6NHC/com.ibm。 swg.im.dashdb.sql.ref.doc/doc/r0011043.html?view = kc#r0011043__t11043-5)並使用'TO_DATE'進行思考。 –

+0

謝謝。我在那裏找到了答案。 –

回答

1
TO_DATE (CD."Application_Creation_Period",'mm.yyyy') 

的作品就好了。我需要添加CASE,因爲該列還包含一個「#」字符值。因此,完整的答案是:

select case 
     when "string_date_column" = '#' then null 
     else TO_DATE ("string_date_column",'mm.yyyy') 
end as "new date" from table; 
0

試試這個

SELECT cast(substring(String_Date_column,4,4)+substring(String_Date_column,1,2)+'01' as date) 
+1

我試着用'sql server',在'dashDB'上''SUBSTR'而不是'substring' – Billydan

+0

我一直收到這個錯誤:「數據類型爲」SYSIBM.DECFLOAT「的值不能CAST鍵入」SYSIBM .DATE「.. SQLCODE = -461,SQLSTATE = 42846,DRIVER = 3.69.56 」但是,因爲該列也保存等於「#」的值......無論如何。我發現了另一種方法來完成...將作爲答案發布 –