2015-11-25 31 views
1

我的數據庫有一個'Events'表。列包括'名稱','日期'和'類型 我想運行一個查詢,返回給定日期和類型的所有事件名稱。如何使用DATEPART返回特定年份的所有行

首先,我該如何使用DATEPART來分解日期,並讓它在年份之前被識別。

+0

請標記dbms used。 (DATEPART不是ANSI SQL ...) – jarlh

回答

1

假設你使用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; 
0

如果你使用'datepart'函數,這將被調用數據庫中的每一行,這可能是昂貴的。

最好使用範圍選擇年份,然後使用索引搜索數據庫中的相關行。

select * from Events where [Date]>='1 jan 2015' and [Date]<'1 jan 2016' and [type]=1

相關問題