我正在尝试更新包含mysql字符串的列,并使用datetime发送到另一列。我使用以下查询
update 2001080_t val
set val.datetimestamp = convert (val.NotUsed4, datetime)
但是字符串格式不正确的问题
Example:
`string` 010716000000
ideal way 2016-07-01 00:00:00
results from query: 2001-07-16 00:00:00
如何改变阅读方式?
答案 0 :(得分:0)
你可以自己操纵日期,因为MySQL永远不会以这种方式真正识别日期,如下所示:
SELECT CONCAT(IF(RIGHT(LEFT('010716000000',6),2) < 30, '20', '19'),
RIGHT(LEFT('010716000000',6),2), '-', RIGHT(LEFT('010716000000',4),2),
'-', LEFT('010716000000',2));
所以你的查询看起来像这样。
UPDATE 2001080_t val
SET val.datetimestamp = CONCAT(IF(RIGHT(LEFT(val.NotUsed4,6),2) < 30, '20', '19'),
RIGHT(LEFT(val.NotUsed4,6),2), '-',
RIGHT(LEFT(val.NotUsed4,4),2), '-',
LEFT(val.NotUsed4,2));
如果你经常这样做,我会建议为它做一个功能:
CREATE FUNCTION hello (myIntDate INT(12))
RETURNS DATETIME
RETURN CONCAT(IF(RIGHT(LEFT(myIntDate,6),2) < 30, '20', '19'),
RIGHT(LEFT(myIntDate,6),2), '-',
RIGHT(LEFT(myIntDate,4),2), '-',
LEFT(myIntDate,2));
编辑:添加支持,如果年份是&gt; 30,它被认为是1900年。