sql从日期开始一年又一年

时间:2015-12-11 17:50:49

标签: mysql sql mysqli

我有一个包含3列的数据库,第一列是日期(日期数据类型)。我想过滤年或月或两者的结果。我发现了这个:

SELECT * FROM Orders WHERE OrderDate='2015-12-11';

但我如何选择2015年或2015年和11月的所有内容?

3 个答案:

答案 0 :(得分:2)

使用YearMonth功能

SELECT year(OrderDate) as `Year`,month(OrderDate) as `Month`
FROM Orders 
WHERE OrderDate='2015-12-11'

答案 1 :(得分:0)

您可以使用内置date functions YEAR()MONTH()功能的MySQL过滤结果:

SELECT * 
FROM Orders 
WHERE 
YEAR(OrderDate) = 2015 AND 
MONTH(OrderDate) = 11;

您还可以使用这些来返回其他结果:

SELECT YEAR(OrderDate) AS OrderYear FROM Orders

或者您可以对结果进行排序:

SELECT * AS OrderYear FROM Orders ORDER BY YEAR(OrderDate)

答案 2 :(得分:0)

我强烈建议您使用日期范围:

select o.*
from Orders o
where OrderDate >= '2015-11-01' and
      OrderDate < '2015-12-01';

使用范围允许数据库引擎使用Orders(OrderDate)上的索引。这可以使查询运行得更快(如果这样的索引可用)。

函数的使用通常会阻止使用索引。