将 CHAR 转换为 mysql 中的日期

Convert CHAR to date in mysql

我正在尝试将存储为 CHAR(4) 的年份与存储为 DATETIME 的年份进行比较,但每次我尝试将 CHAR 年份转换为日期时,当我期望格式为年份时,我总是得到 NULL 'YYYY'。我已经阅读了使用 str_to_date 的格式,但我不确定为什么它总是显示为 null(也许我误读了什么)。 str_to_date 函数中的 string/format 必须是完整日期而不仅仅是年份格式吗?

SELECT id, STR_TO_DATE(year, '%Y') AS Year
FROM elite_years
LIMIT 100;

elite_years table 中的大部分(如果不是全部)数据是四字符年份(例如“2008”)。我也无法修改 table 中的数据类型。 我正在使用 Yelp 数据集 fyi。

我查看了 this post, but from what I could see, I am following the correct formatting which I based off of the docs

要使用 STR_TO_DATE() 解析字符串,字符串中需要有足够的信息来唯一标识日期。仅仅一年是不够的——你还需要一个月和一天,以某种形式。

这在您尝试时收到的警告中有所暗示:

mysql> SELECT STR_TO_DATE('2009', '%Y') \G
*************************** 1. row ***************************
str_to_date('2009', '%Y'): NULL
1 row in set, 1 warning (0.00 sec)

mysql> SHOW WARNINGS \G
*************************** 1. row ***************************
  Level: Warning
   Code: 1411
Message: Incorrect datetime value: '2009' for function str_to_date
1 row in set (0.00 sec)