使用MY-SQL更新数据库日期值格式

时间:2017-11-14 12:42:20

标签: php mysql

我将日期存储在数据库的日期列中,格式为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来更新日期格式。谢谢!

3 个答案:

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