Mysql月 - 年比较

时间:2013-07-09 05:42:29

标签: mysql

大家好我只是想问一下如何才能进行一个以月为单位的查询 - 仅选择年份?比如,范围是2013年1月 - 2014年12月?

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

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

现在我想做“WHERE date> =(2013年1月)和日期日期< =(2014年12月)。 可能吗?谢谢你的帮助!

6 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

SELECT fields
FROM table
WHERE EXTRACT(YEAR_MONTH FROM date) BETWEEN '2013-01' AND '2014-12'

你也可以使用DATE_FORMAT(日期,'%Y%m')代替EXTRACT。

答案 2 :(得分:1)

考虑这样的选择:

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

SQLFiddle

答案 3 :(得分:0)

使用mysql Date and Time Functions

的月和年函数

答案 4 :(得分:0)

SELECT * 
FROM MySampleTable
WHERE Month(create_dt) IN (1, 2, 3)
AND Year(create_dt) = 2013

如果您的表中有大量数据,并且您感兴趣的日期字段已编入索引,则可能需要将其与开始日期和结束日期绑定。对这些函数的评估将强制进行表扫描(因为日期值必须由两个函数按摩以便正确解释),因此这将运行缓慢。您可以采取的任何措施来减少被评估的行数。

答案 5 :(得分:0)

SELECT * FROM `table` WHERE date_format(`date`,'%M %Y') >= 'January 2013' AND date_format(`date`,'%M %Y') <= 'December 2014'