将CHAR转换为mysql中的日期

时间:2018-04-04 15:02:42

标签: mysql str-to-date

我正在尝试将存储为CHAR(4)的年份与存储为DATETIME的年份进行比较,但每次我尝试将CHAR年份转换为日期时,我总是在格式化时期望获得年份&# 39; YYYY&#39 ;.我已经阅读了使用str_to_date的格式,但我不确定为什么它总是出现为null(也许我误读了一些东西)。 str_to_date函数中的字符串/格式必须是完整日期而不仅仅是年份格式吗?

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

elite_years表格中的大部分数据都是四个字符年(例如' 2008')。我也无法修改表中的数据类型。 我正在使用Yelp Dataset fyi。

我查看了this post,但从我能看到的情况来看,我遵循的是基于the docs的正确格式。

1 个答案:

答案 0 :(得分:1)

要使用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)