SQL:Datepart搜索

SQL:Datepart搜索,sql,tsql,Sql,Tsql,我希望有人不会介意帮我做一些我一直坚持的事情 我需要生成一份报告,其中列出了在特定日期范围内创建的项目的数量。例如,当用户在2013年9月15日运行此报告时,它将显示创建日期为本月1日或之前的所有记录的计数 下面是我尝试使用的代码,但没有运行。我想知道我是不是最好用datepart SELECT RECORDTYPE, COUNT(RECORDTYPE) AS 'COUNT OF RECORDS' FROM VIEW_GLOBALSEARCH WHERE DATEPART(YYYY,CREA

我希望有人不会介意帮我做一些我一直坚持的事情

我需要生成一份报告,其中列出了在特定日期范围内创建的项目的数量。例如,当用户在2013年9月15日运行此报告时,它将显示创建日期为本月1日或之前的所有记录的计数

下面是我尝试使用的代码,但没有运行。我想知道我是不是最好用datepart

SELECT RECORDTYPE, COUNT(RECORDTYPE) AS 'COUNT OF RECORDS' 
FROM VIEW_GLOBALSEARCH 
WHERE DATEPART(YYYY,CREATIONDATE) = DATEPART(YYYY, GETDATE ()) 
  AND DATEPART(MM,CREATIONDATE) = DATEPART(MM, GETDATE ())
  AND DATEPART(DD,CREATIONDATE)= '01'
   OR CREATIONDATE <= DATEPART(MM, CREATIONDATE) = DATEPART(MM, GETDATE())
DATEPART(YYYY,CREATIONDATE) = DATEPART(YYYY, GETDATE ()) 
选择记录类型,计数(记录类型)作为“记录计数”
从视图\u全球搜索
其中DATEPART(YYYY,CREATIONDATE)=DATEPART(YYYY,GETDATE())
和DATEPART(MM,CREATIONDATE)=DATEPART(MM,GETDATE())
日期部分(DD,CREATIONDATE)='01'

或者CREATIONDATE您最好不要使用datepart。where子句中的函数会降低性能。更好的方法是使用这种方法

where creationdate >= the start of your date range
and creationdate < the day after your date range
其中creationdate>=日期范围的开始
和creationdate<约会范围后的第二天
这不仅会运行得更快,还将考虑creationdate的时间部分。

对于“当前月份的第一个或之前的创建日期”,请使用以下WHERE子句。第二部分将始终在当月的第一天返回


其中CREATIONDATE这将获得截至8月31日的所有记录

SELECT RECORDTYPE, COUNT(RECORDTYPE) AS 'COUNT OF RECORDS' FROM VIEW_GLOBALSEARCH WHERE Year(CREATOINDATE) 选择记录类型,计数(记录类型)作为“记录计数” 从视图\u全球搜索 何处年份(创建日期)
非常感谢德克兰,我来试试。非常感谢丹,我来试试。