2014-09-11 52 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

相關問題