3

如何进行查询以仅选择月份 - 年份?比如,2013 年 1 月至 2014 年 12 月的范围在哪里?

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

我通常会做一个日期范围,比如WHERE date >= ? AND date <= ?从日期到日期。我只想选择月份和年份,没有日期。

现在我想做WHERE date >= (January 2013) AND date date <= (December 2014)

是否可以?

4

6 回答 6

6
SELECT * FROM TABLE_NAME
WHERE DATE_FORMAT(date, "%Y-%m") BETWEEN '2013-01' AND '2014-12';
于 2013-07-09T06:13:33.563 回答
2
SELECT fields
FROM table
WHERE EXTRACT(YEAR_MONTH FROM date) BETWEEN '2013-01' AND '2014-12'

您也可以使用 DATE_FORMAT(date,'%Y%m') 代替 EXTRACT。

于 2014-02-11T03:16:01.917 回答
1

使用mysql Date and Time Functions的Month and Year函数

于 2013-07-09T05:47:06.620 回答
1

考虑这样的选择:

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

SQLFiddle

于 2013-07-09T06:00:41.840 回答
0
SELECT * 
FROM MySampleTable
WHERE Month(create_dt) IN (1, 2, 3)
AND Year(create_dt) = 2013

如果您的表中有大量数据,并且您感兴趣的日期字段已编入索引,则您可能希望将其绑定到开始日期和结束日期之间。对这些函数的评估将强制进行表扫描(因为日期值必须由两个函数进行按摩才能正确解释),因此运行速度会很慢。您可以做的任何事情来减少被评估的行数都会有所帮助。

于 2013-07-09T05:48:32.753 回答
0
SELECT * FROM `table` WHERE date_format(`date`,'%M %Y') >= 'January 2013' AND date_format(`date`,'%M %Y') <= 'December 2014'
于 2013-07-09T06:04:40.010 回答