0

我希望有人不会介意帮助我解决的问题。

我需要生成一份报告,其中列出了在特定日期范围内创建的项目的数量。例如,当用户在 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 ()) 

任何建议表示赞赏 - 对不起,如果这是基本的。

4

3 回答 3

1

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

WHERE CREATIONDATE <= DATEADD(m, DATEDIFF(m, 0, getdate()), 0)

于 2013-09-16T14:38:12.843 回答
0

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

where creationdate >= the start of your date range
and creationdate < the day after your date range

这不仅会运行得更快,而且会考虑creationdate的时间部分。

于 2013-09-16T14:36:14.737 回答
0

这将使所有记录到 8/31 为止。

    选择记录类型,计数(记录类型)作为“记录计数”
      FROM VIEW_GLOBALSEARCH
     WHERE 年份(创建日期)
于 2013-09-16T15:52:37.850 回答