按年过滤MySQL的记录

时间:2013-06-10 19:29:10

标签: mysql

  1. 如果我有列类型日期,则会显示2013-06-25这样的日期。如何按年度过滤记录,例如2011年或2013年?
  2. 如何过滤日期之间的记录,例如:2013-06-25和2013-07-20

3 个答案:

答案 0 :(得分:5)

2013-06-25至2013-07-20之间的所有日期:

SELECT * FROM myTable
WHERE myDateColumn BETWEEN '2013-06-25' AND '2013-07-20'

2011年或2013年的所有日期:

SELECT * FROM myTable
WHERE YEAR(myDateColumn) IN (2011, 2013)

2011年至2013年之间的所有日期:

SELECT * FROM myTable
WHERE YEAR(myDateColumn) BETWEEN 2011 AND 2013

或者如果你有一个关于日期的索引并想要一个可优化的查询,你应该放弃YEAR函数调用:

SELECT * FROM myTable
WHERE myDateColumn BETWEEN '2011-01-01' AND '2013-12-31'

按照建议查看日期功能。祝你好运!

答案 1 :(得分:1)

使用类似的东西:

SELECT * FROM table 
WHERE date LIKE '%2013%'

获取包含2013年的数据。

将此应用到您自己的表结构中,它应该会为您提供所需的结果。

答案 2 :(得分:1)

您应该查看MySql的date and time functions,它会向您显示有关日期和时间可用的不同功能的大量信息。但是,要回答您的问题,我希望这些快速查询会有所帮助。

SELECT 
    * 
FROM MyTable 
WHERE datecolumn > '2011-01-01' 
    AND datecolumn < '2012-01-01'

或者,您可以将其写为

SELECT 
    * 
FROM MyTable 
WHERE datecolumn BETWEEN '2011-01-01' AND '2012-01-01'

以这种方式编写查询而不是使用YEAR函数将有助于利用索引(如果有的话)。