MySQL中的拆分日期字段,以便在查询的何处部分使用年和月

MySQL中的拆分日期字段,以便在查询的何处部分使用年和月,mysql,Mysql,我有一个查询,它有一个名为CREATED_DATE的字段。这将从数据库中提取日期字段: 2015-05-11 12:23:58 但是,我需要在查询本身中拆分此日期,因为我需要在查询的where部分使用年份和月份,例如: SELECT CREATED_DATE FROM b_created_table WHERE YEAR = '2015' AND MONTH = '05' 我会用什么来分割它来得到我需要的两部分。然后,我会将这些部分按年份和月份显示,以便在查询的WHERE部分使用它们 提前感

我有一个查询,它有一个名为CREATED_DATE的字段。这将从数据库中提取日期字段:

2015-05-11 12:23:58
但是,我需要在查询本身中拆分此日期,因为我需要在查询的where部分使用年份和月份,例如:

SELECT CREATED_DATE FROM b_created_table WHERE YEAR = '2015' AND MONTH = '05'
我会用什么来分割它来得到我需要的两部分。然后,我会将这些部分按年份和月份显示,以便在查询的WHERE部分使用它们


提前感谢

如果可以避免的话,最好不要在WHERE和JOIN条件中修改字段值:

SELECT CREATED_DATE 
FROM b_created_table 
WHERE CREATED_DATE >= '2015-[TARGETMONTH]-01 00:00:00'
   AND CREATED_DATE < '2015-[TARGETMONTH]-01 00:00:00' + INTERVAL 1 MONTH
;
但是如果你坚持的话,MySQL有很多功能


…Google搜索mysql year发现的第二个结果。

您的具体问题的答案是:

SELECT CREATED_DATE
FROM b_created_table
WHERE YEAR(CREATED_DATE) = 2015 AND MONTH(CREATED_DATE) = 05;
不过,一般来说,您希望避免在可能被索引的列上使用函数,并且创建日期可能被索引。函数阻止使用索引。您有几种选择,但下面是一个如何避免这种情况的示例:

WHERE CREATED_DATE >= DATE(CONCAT_WS('-', '2015', '05', '01')) AND
      CREATED_DATE < DATE(CONCAT_WS('-', '2015', '05', '01')) + INTERVAL 1 MONTH