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

3 回答 3

16

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'

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

于 2013-06-10T19:37:45.460 回答
1

使用这样的东西:

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

获取包含 2013 年的数据。

将此应用于您自己的表结构,它应该会给您所需的结果。

于 2013-06-10T19:36:59.947 回答
1

您可能应该查看 MySql 的日期和时间函数,它向您展示了有关日期和时间可用的不同函数的大量信息。但是,为了回答您的问题,我希望这些快速查询会有所帮助。

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函数将有助于利用索引(如果有的话)。

于 2013-06-10T19:37:34.873 回答