2014-09-11 59 views
-1

我有一个表格,其中的日期时间格式为Order_Date。 而我正在撰写一个查询,这些查询只选择了我今年的所有产品。 但我真的不知道我该怎么写。从一个特定年份中选择项目

在“伪查询”它应该是这样的:

SELECT * FROM produit WHERE Order_Date(year) == now(year) order by Order_Date desc 
+0

“> =今年1月”和“<= dec-31今年” – 2014-09-11 07:54:49

回答

1

你拥有它倒退。当你想调用列上的函数时,可以将函数名称放在列名称之外。所以这是

WHERE YEAR(Order_Date) = YEAR(NOW()) 
+0

哦,我几乎在那里......谢谢,它的作品完全像我想要的^^ – 2014-09-11 07:59:29

1

我认为你可以这样做:

SELECT * FROM produit WHERE YEAR(Order_Date) = YEAR(NOW()) order by Order_Date desc 
0

您可以在优化搜索的方式重写查询作为

SELECT * 
FROM produit 
WHERE 
Order_Date between DATE_FORMAT(NOW() ,'%Y-01-01') 
and DATE_FORMAT(NOW() ,'%Y-12-31') 
order by Order_Date desc 

SELECT * 
FROM produit 
WHERE 
Order_Date >= DATE_FORMAT(NOW() ,'%Y-01-01') 
and Order_Date <= DATE_FORMAT(NOW() ,'%Y-12-31') 
order by Order_Date desc 

所以,如果你在上有索引10然后查询将使用索引,但如果你应用任何函数在你的列查询将不会使用索引Sargable