在mySQL中将字符串值转换为日期/日期时间

时间:2016-07-13 07:47:38

标签: mysql

我正在将DB2表加载到mysql中,并且在使用Date格式加载数据时遇到了问题。

我将这些列转换为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到DATE的转换,我们将不胜感激。

4 个答案:

答案 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

答案 1 :(得分: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');

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分:0)

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