mysql - 在mysql中将CHAR转换为日期

标签 mysql str-to-date

我试图将存储为 CHAR(4) 的年份与存储为 DATETIME 的年份进行比较,但每次尝试将 CHAR 年份转换为日期时,当我期望年份格式为“YYYY”时,我总是得到 NULL '。我已经阅读了使用 str_to_date 的格式,但我不确定为什么它总是显示为空(也许我读错了一些东西)。 str_to_date 函数中的字符串/格式必须是完整日期而不仅仅是年份格式吗?

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

elite_years 表中的大多数(如果不是全部)数据都是四个字符的年份(例如“2008”)。我也无法修改表中的数据类型。 我正在使用 Yelp 数据集仅供引用。

我查看了this post ,但从我所看到的来看,我遵循的是基于 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)

关于mysql - 在mysql中将CHAR转换为日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49654386/

相关文章:

php - 在特定事件发生前 24 小时安排电子邮件通知?

mysql - Laravel - 检查一个事件是否与其他事件发生冲突

mysql - str_to_date() 不适用于正确的语法

mysql - 将 MySQL 文本字符串与时间转换为日期

php - 如何使用mysql LOAD XML LOCAL INFILE导入xml文件

php - PDO:无法传递变量进行准备

php - 为什么数组会保留重复数据

MySQL将年月日期列连接到同一表中的日期列

MySQL = 按月份对销售计数进行分组,然后将月份显示为名称(一月、二月...十二月)而不是数值(1,2,3-12)

mysql - MySQL 导入文件超过 60 秒或分钟