我有一个包含3列的数据库,第一列是日期(日期数据类型)。我想过滤年或月或两者的结果。我发现了这个:
SELECT * FROM Orders WHERE OrderDate='2015-12-11';
但我如何选择2015年或2015年和11月的所有内容?
答案 0 :(得分:2)
使用Year
和Month
功能
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)
上的索引。这可以使查询运行得更快(如果这样的索引可用)。
函数的使用通常会阻止使用索引。