Mysql月-年比较

Mysql月-年比较,mysql,Mysql,我怎样才能进行一个只对月份和年份进行选择的查询?比如,范围是2013年1月至2014年12月 我的表中有一个“日期”列 我通常做一个日期范围,比如WHERE date>=?日期=(2013年1月)和日期使用mysql的月和年函数 如果您的表中有大量数据,并且您感兴趣的日期字段已编制索引,则可能需要将其与开始日期和结束日期之间的日期绑定。对这些函数的求值将强制进行表扫描(因为两个函数必须对日期值进行调整才能正确解释),因此这将运行缓慢。任何可以减少被评估行数的操作都会有所帮助。考虑如下选择: SE

我怎样才能进行一个只对月份和年份进行选择的查询?比如,范围是2013年1月至2014年12月

我的表中有一个“日期”列


我通常做一个日期范围,比如
WHERE date>=?日期=(2013年1月)和日期使用mysql的月和年函数


如果您的表中有大量数据,并且您感兴趣的日期字段已编制索引,则可能需要将其与开始日期和结束日期之间的日期绑定。对这些函数的求值将强制进行表扫描(因为两个函数必须对日期值进行调整才能正确解释),因此这将运行缓慢。任何可以减少被评估行数的操作都会有所帮助。

考虑如下选择:

SELECT *
FROM supportContacts
WHERE DATE_FORMAT(date, '%Y') BETWEEN '2013' AND '2014'
AND DATE_FORMAT(date, '%m') BETWEEN '01' AND '12';

从'table'中选择*,其中日期格式('date','%M%Y')>='2013年1月'和日期格式('date','%M%Y'))

您还可以使用日期格式(日期,%Y%m')而不是提取。

为什么不使用2013年1月1日和2014年12月1日作为筛选器。它会给你同样的结果,你想要的。因为公司希望这样。我用它来生成报告,他们说它只能过滤月-年-月-年,而不是从日期到日期,以避免在上面加上日期。但当你在列上应用任何函数时,它将不会使用索引,因此在这种情况下,你的查询将变慢。02-2000将属于该范围。也许如果您将订单改为“%Y-%m”。。。
SELECT *
FROM supportContacts
WHERE DATE_FORMAT(date, '%Y') BETWEEN '2013' AND '2014'
AND DATE_FORMAT(date, '%m') BETWEEN '01' AND '12';
SELECT * FROM `table` WHERE date_format(`date`,'%M %Y') >= 'January 2013' AND date_format(`date`,'%M %Y') <= 'December 2014'
SELECT * FROM TABLE_NAME
WHERE DATE_FORMAT(date, "%Y-%m") BETWEEN '2013-01' AND '2014-12';
SELECT fields
FROM table
WHERE EXTRACT(YEAR_MONTH FROM date) BETWEEN '2013-01' AND '2014-12'