我的數據庫有一個'Events'表。列包括'名稱','日期'和'類型 我想運行一個查詢,返回給定日期和類型的所有事件名稱。如何使用DATEPART返回特定年份的所有行
首先,我該如何使用DATEPART來分解日期,並讓它在年份之前被識別。
我的數據庫有一個'Events'表。列包括'名稱','日期'和'類型 我想運行一個查詢,返回給定日期和類型的所有事件名稱。如何使用DATEPART返回特定年份的所有行
首先,我該如何使用DATEPART來分解日期,並讓它在年份之前被識別。
假設你使用SQL Server和你的「日期」欄是日期或日期時間數據類型,你可以這樣做:
SELECT GETDATE() -- i.e. will return 2015-11-25 11:27:27.700
SELECT DATEPART(YEAR,GETDATE()) -- returns 2015
所以你的查詢來獲取所有事件在2015年,例如,可以看起來像這樣:
SELECT Name, Date, Type
FROM Events
WHERE DATEPART(YEAR,Date) = 2015
AND TYPE = <your type condition>
ORDER BY Date;
如果你使用'datepart'函數,這將被調用數據庫中的每一行,這可能是昂貴的。
最好使用範圍選擇年份,然後使用索引搜索數據庫中的相關行。
select * from Events where [Date]>='1 jan 2015' and [Date]<'1 jan 2016' and [type]=1
請標記dbms used。 (DATEPART不是ANSI SQL ...) – jarlh