我希望有人不会介意帮我做一些我被困在上面的事情。
我需要编制一份报告,列出在某一日期范围内创建的项目的数量。例如,当用户在2013年9月15日运行此报告时,它将显示创建日期为当前月1日或之前的任何记录的计数。
我试图工作的代码如下所示,但没有运行。我想知道我是否可以更好地利用日期部分来完成这个任务?
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 ()) 任何建议都很感激--如果这是基本建议的话,很抱歉。
发布于 2013-09-16 14:38:12
用于“当前月1日或之前的创建日期”。使用以下WHERE子句。这其中的第二件总是会回来的,那就是这个月的第一天。
WHERE CREATIONDATE <= DATEADD(m, DATEDIFF(m, 0, getdate()), 0)
发布于 2013-09-16 14:36:14
最好不要使用datepart。函数在where子句中减慢性能。更好的方法是使用这种方法。
where creationdate >= the start of your date range
and creationdate < the day after your date range这不仅会运行得更快,它还将考虑到创世日期的时间部分。
https://stackoverflow.com/questions/18830501
复制相似问题