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

Sql 如何使用DATEPART返回具有特定年份的所有行,sql,datepart,Sql,Datepart,我的数据库有一个表“Events”。列包括“名称”、“日期”和“类型” 我想运行一个查询,返回给定日期和类型的所有事件名称 首先,我如何使用DATEPART分解日期,并允许按年份标识日期 假设您使用的是SQL Server,并且“日期”列是日期或日期时间数据类型,则可以执行以下操作: SELECT GETDATE() -- i.e. will return 2015-11-25 11:27:27.700 SELECT DATEPART(YEAR,GETDATE()) -- ret

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


首先,我如何使用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(年份,日期)=2015年
和类型=
按日期订购;

如果使用“datepart”函数,则会对数据库中的每一行调用该函数,这可能代价高昂

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

从事件中选择*,其中[Date]>='2015年1月1日'和[Date]请标记使用的dbms。(DATEPART不是ANSI SQL…)