如何进行查询以仅选择月份 - 年份?比如,2013 年 1 月至 2014 年 12 月的范围在哪里?
我的表中有一个“日期”列。
我通常会做一个日期范围,比如WHERE date >= ? AND date <= ?
从日期到日期。我只想选择月份和年份,没有日期。
现在我想做WHERE date >= (January 2013) AND date date <= (December 2014)
。
是否可以?
如何进行查询以仅选择月份 - 年份?比如,2013 年 1 月至 2014 年 12 月的范围在哪里?
我的表中有一个“日期”列。
我通常会做一个日期范围,比如WHERE date >= ? AND date <= ?
从日期到日期。我只想选择月份和年份,没有日期。
现在我想做WHERE date >= (January 2013) AND date date <= (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'
您也可以使用 DATE_FORMAT(date,'%Y%m') 代替 EXTRACT。
考虑这样的选择:
SELECT *
FROM supportContacts
WHERE DATE_FORMAT(date, '%Y') BETWEEN '2013' AND '2014'
AND DATE_FORMAT(date, '%m') BETWEEN '01' AND '12';
SELECT *
FROM MySampleTable
WHERE Month(create_dt) IN (1, 2, 3)
AND Year(create_dt) = 2013
如果您的表中有大量数据,并且您感兴趣的日期字段已编入索引,则您可能希望将其绑定到开始日期和结束日期之间。对这些函数的评估将强制进行表扫描(因为日期值必须由两个函数进行按摩才能正确解释),因此运行速度会很慢。您可以做的任何事情来减少被评估的行数都会有所帮助。
SELECT * FROM `table` WHERE date_format(`date`,'%M %Y') >= 'January 2013' AND date_format(`date`,'%M %Y') <= 'December 2014'