为什么CASTing VarChar到DateTime会导致null?

时间:2017-12-11 21:52:14

标签: mysql

我正在运行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 NULLSTR_TO_DATE(review_date, '%m/%d/%Y')也会产生一列Null单元格。

1 个答案:

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