如何使用DATEPART返回特定年份的所有行

时间:2015-11-25 11:22:18

标签: sql datepart

我的数据库有一个表'事件'。列包括“名称”,“日期”和“类型” 我想运行一个返回给定日期和类型的所有事件名称的查询。

首先,我如何使用DATEPART来分解日期并允许它按年份识别。

2 个答案:

答案 0 :(得分:1)

假设您正在使用SQL Server并且您的日期是'列是DATE或DATETIME数据类型,您可以这样做:

    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;

答案 1 :(得分:0)

如果您使用&#39; datepart&#39;函数,这将被调用数据库中的每一行,这可能是昂贵的。

最好通过使用范围来选择年份,然后它可以使用索引来搜索数据库中的相关行。

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