mysql 为什么将VarChar强制转换为DateTime会导致null?

ki1q1bka  于 2023-01-29  发布在  Mysql
关注(0)|答案(2)|浏览(159)

我正在运行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
我以前没有转换为日期时间,但我不明白上面的语句是如何偏离文档的,或者为什么它们不起作用。
我使用以下语法为列创建:并且STR_TO_DATE(review_date, '%m/%d/%Y')也产生空单元的列。

z9smfwbn

z9smfwbn1#

问题是在强制转换或转换时,字符串值不是标准的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
wkftcu5l

wkftcu5l2#

这是为MYSQL(我在那里把字符串转换成日期函数)

SELECT cast(str_to_date(column_name), '%m/%d/%y') as date) 
FROM Table Name;

示例:

SELECT cast(str_to_date(Release_Date, "%m/%d/%y") as date) 
FROM movie-data;

请确保在日期格式中正确使用分隔符。就像我的例子一样,字符串列中的日期用'/'分隔。在您的例子中,它可能用逗号','或点'.'分隔。请确保使用该分隔符。

Example: 3/8/2016  "%m/%d/%y"
         3,8,2016  "%m,%d,%y"
         3.8.2016  "%m.%d.%y"

相关问题