2016-07-13 81 views
1

我正在將DB2表加載到mysql中,並且在使用日期格式加載數據時遇到了問題。在mySQL中將字符串值轉換爲日期/日期時間

我將這些列轉換爲VARCHAR(26)格式併成功加載數據。

現在我想將2003-01-13-16.50.32.000000轉換爲日期格式。

我引入了Date數據類型的另一列,並嘗試使用origional(String)列更新它。

update po_datamart 
    set POH_APPROVED_DATE_TEMP=DATE_FORMAT(str_to_date(POH_APPROVED_DATE,'%Y-%c-%d-%H.%i.%s'), '%Y-%c-%d%H:%m:%s'); 

我收到以下錯誤:「錯誤代碼:1292截斷不正確的日期時間值:‘2003-01-13-16.50.32.000000’」。

如果有人能幫助我通過VARCHAR轉換日期,我將不勝感激。

+0

請避免爆破用相同的詳細註釋每一個答案。相反,你可以更新你的問題。 –

回答

1

使用STR_TO_DATE用適當的格式掩碼:

SELECT STR_TO_DATE('2003-01-13-16.50.32.000000', '%Y-%m-%d-%H.%i.%s.%f') 

如果你想更新:

UPDATE po_datamart 
SET POH_APPROVED_DATE_TEMP = STR_TO_DATE(POH_APPROVED_DATE, '%Y-%m-%d-%H.%i.%s.%f') 

按照下面的鏈接,運行演示:

SQLFiddle

+0

你好Tim。感謝您的回覆。當我激發你的選擇查詢時,我得到的響應爲NULL值。當我運行你的更新查詢時,我得到「錯誤代碼:1411.錯誤的日期時間值:'2003-01-13-16.50.32.000000'for function str_to_date」 – user2663104

+0

@ user2663104對不起,我已經更新,現在它的作品。我在24小時內使用'%h'12小時代替'%H'。 –

+0

更新po_datamart SET POH_APPROVED_DATE_TEMP = STR_TO_DATE(POH_APPROVED_DATE,'%Y-%m-%d-%H.%i。%s。%f') - 此查詢工作,但以響應結束 - 「錯誤代碼:1411.不正確日期時間值:'+ 0.00000000000000E + 000'for function str_to_date「 – user2663104

0

我想你只需要和空間,嘗試用:

set POH_APPROVED_DATE_TEMP=DATE_FORMAT(str_to_date(POH_APPROVED_DATE,'%Y-%c-%d-%H.%i.%s'), '%Y-%c-%d %H:%m:%s'); 

'%Y-%c-%d%H:%m:%s'改變最後字符串'%Y-%c-%d %H:%m:%s'

更新date列:

set POH_APPROVED_DATE_TEMP=DATE_FORMAT(str_to_date(POH_APPROVED_DATE,'%Y-%c-%d-%H.%i.%s'), '%Y-%c-%d'); 
+0

感謝您的回覆。我得到的答案爲「錯誤代碼:1292.截斷不正確的日期時間值:'2003-01-13-16.50.32。000000'「 – user2663104

+0

我嘗試代碼,似乎正常工作;什麼數據類型具有'POH_APPROVED_DATE_TEMP'(日期,日期時間,其他?)。如果列是'日期'類型然後數據被截斷,您使用'2003-01 -13 16:50:32'列中只允許'2003-01-13'。我編輯答案相應。 –

+0

我使用日期。我應該使用日期時間嗎? – user2663104

0

試試這個:

update po_datamart set POH_APPROVED_DATE_TEMP = str_to_date(POH_APPROVED_DATE, '%Y-%m-%d-%H.%i.%s.%f'); 
+0

感謝您的回覆。錯誤代碼:1292.截斷不正確的日期時間值:'2003-01-13-16.50.32.000000' 出現以上錯誤。 – user2663104

+0

'POH_APPROVED_DATE'的類型是varchar還是date? – Blank

+0

POH_APPROVED_DATE的類型是varchar – user2663104

0
UPDATE  po_datamart 
    SET  POH_APPROVED_DATE_TEMP = str_to_date(POH_APPROVED_DATE, '%Y-%m-%d-%H.%i.%s.%f'); 
+0

UPDATE po_datamart SET POH_APPROVED_DATE_TEMP = STR_TO_DATE(POH_APPROVED_DATE,'%Y-%m-%d-%H.%i。%s。%f') - 此查詢工作,但又以響應結束 - 「錯誤代碼:1411.錯誤的日期時間值:'+ 0.00000000000000E + 000'for function str_to_date」 – user2663104

+0

您使用的是哪個版本的MySQL? – piotrgajow

相關問題