SQL:Datepart搜索

时间:2013-09-16 14:28:38

标签: sql tsql

我希望有人不介意帮助我坚持下去。

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

感谢任何建议 - 如果这是基本的,请抱歉。

3 个答案:

答案 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)