我将日期存储在数据库的日期列中,格式为dd-mm-yyyy
。此列数据类型为VARCHAR
。我想以yyy-mm-dd
格式转换这些存储日期。我尝试使用这个MYSQL查询:
UPDATE status SET new_time_creation = STR_TO_DATE(date, '%Y-%m-%d');
但这并未正确转换日期(例如,30-05-2016 => 2030-05-20)。 请帮助我这个查询或建议最好甚至使用PHP来更新日期格式。谢谢!
答案 0 :(得分:2)
UPDATE status SET new_time_creation = STR_TO_DATE(date, '%d-%m-%Y');
试试这个。您需要在此处格式化日期'%d-%m-%Y'
。因此,基本上在您的代码中,您希望订单为days-months-years
,但您会以相反的顺序更新。
答案 1 :(得分:0)
UPDATE transaction SET new_time_creation = STR_TO_DATE(time_creation, '%Y-%m-%d');
STR_TO_DATE
documentation。
答案 2 :(得分:0)
STR_TO_DATE
应该有效,假设您具有指定的格式。
假设如下所示的基本表:
CREATE TABLE
Demo
(
date VARCHAR(10)
);
INSERT INTO `Demo` (`date`) VALUES ('30-05-2016');
您显然可以选择自己,但您也可以使用DATE_FORMAT
功能以适合您目的的任何格式对其进行格式化。
SELECT
`date` AS `OriginalFormat`,
STR_TO_DATE(`date`, '%d-%m-%Y') AS `DateFormat`,
DATE_FORMAT(STR_TO_DATE(`date`, '%d-%m-%Y'), '%m-%d-%Y') AS `CustomFormat`
FROM
`Demo`
返回:
OriginalFormat | DateFormat | CustomFormat
-------------------------------------------
30-05-2016 | 2016-05-30 | 05-30-2016
SQLFiddle:http://sqlfiddle.com/#!9/85c27c/3