我希望有人不介意帮助我坚持下去。
我需要生成一份报告,其中列出了在特定日期范围内创建的项目数。例如,当用户在15/09/2013运行此报告时,它将显示创建日期为当月或之前的第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 ())
感谢任何建议 - 如果这是基本的,请抱歉。
答案 0 :(得分:1)
对于“当月1日或之前的创建日期”。使用以下WHERE子句。第二部分将在本月的第一天回归。
WHERE CREATIONDATE <= DATEADD(m, DATEDIFF(m, 0, getdate()), 0)
答案 1 :(得分:0)
最好不要使用datepart。 where子句中的函数会降低性能。更好的方法是使用这种方法。
where creationdate >= the start of your date range
and creationdate < the day after your date range
这不仅运行得更快,还需要考虑creationdate的时间组件。
答案 2 :(得分:0)
这将使所有记录在8/31之前完成。
SELECT RECORDTYPE, COUNT(RECORDTYPE) AS 'COUNT OF RECORDS' FROM VIEW_GLOBALSEARCH WHERE Year(CREATOINDATE)