我的数据库有一个表'事件'。列包括“名称”,“日期”和“类型” 我想运行一个返回给定日期和类型的所有事件名称的查询。
首先,我如何使用DATEPART来分解日期并允许它按年份识别。
答案 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