我正在运行MySQL并尝试将以下行从VarChar转换为DateTime
+-------------------+
| review_date |
+-------------------+
| May 24, 2015 |
| June 3, 2013 |
| December 19, 2003 |
+-------------------+
我试过CAST(review_date as DATETIME)
但是当我在SELECT语句中测试它时,会产生一列空值。
我还尝试了CONVERT(DATETIME, review_date, 107)
,但结果是:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'review_date, 107) at line 3
我之前没有转换为日期时间,但我无法理解上述陈述如何偏离文档或者为什么它们不起作用。
我使用此语法为列创建:review_date varchar(255) DEFAULT NULL
。 STR_TO_DATE(review_date, '%m/%d/%Y')
也会产生一列Null单元格。
答案 0 :(得分:1)
问题是当你进行转换或转换时,你的字符串值不是标准的yyyy-mm-dd格式。
如果您运行此示例,您将看到我的意思。此示例还具有将字符串转换为日期的正确方法:
SELECT
CAST(review_date AS DATETIME) -- gives null due to incorrect format
, STR_TO_DATE(review_date, '%M %d, %Y') -- gives correct date
, CAST('2015-05-24' AS DATE) -- gives date due to correct format
FROM
date_test