mysql 如何将ORD_DATE列的字符格式转换为日期格式?[关闭]

toiithl6  于 2023-05-21  发布在  Mysql
关注(0)|答案(1)|浏览(130)

**关闭。**这个问题是not reproducible or was caused by typos。目前不接受答复。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
我有一个名为“neworders”的表,其中列“ORD_DATE”的值为15-Aug-08 schema is CHAR。我想将格式转换为日期格式,但不断运行到错误-“不正确的日期时间值”

update neworders set ORD_DATE = str_to_date('ORD_DATE', "%e %m %y");

SELECT date_format('ORD_DATE', "%e %m %y");

我也试过date_format,但没有用

sd2nnvve

sd2nnvve1#

在您的查询中,您在单引号中使用了'ORD_DATE'-这是一个问题。您必须引用该列的值,而不是固定的ORD_DATE字符串。ORD_DATE本身不是日期。
此外,表中存储日期的格式中有连字符,而UPDATE查询中的格式没有连字符。此外,%M(大写M)用于月份名称,%m用于数字月份。
以下是一个适合你约会的工作样本:

CREATE TABLE `tbl` (
  `ord_date` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `ord_date_new` date DEFAULT NULL
) ENGINE=InnoDB;

INSERT INTO `test`.`tbl` (`ord_date`) VALUES ('15-Aug-08');

SELECT * FROM tbl;

ord_date   ord_date_new
---------  --------------
15-Aug-08  (NULL)

UPDATE tbl SET ord_date_new = STR_TO_DATE(ord_date, '%e-%M-%y');

1 row affected

SELECT * FROM tbl;

ord_date   ord_date_new
---------  --------------
15-Aug-08  2008-08-15

相关问题