首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL: Datepart搜索

SQL: Datepart搜索
EN

Stack Overflow用户
提问于 2013-09-16 14:28:37
回答 2查看 153关注 0票数 0

我希望有人不会介意帮我做一些我被困在上面的事情。

我需要编制一份报告,列出在某一日期范围内创建的项目的数量。例如,当用户在2013年9月15日运行此报告时,它将显示创建日期为当前月1日或之前的任何记录的计数。

我试图工作的代码如下所示,但没有运行。我想知道我是否可以更好地利用日期部分来完成这个任务?

代码语言:javascript
复制
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 ()) 

任何建议都很感激--如果这是基本建议的话,很抱歉。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-16 14:38:12

用于“当前月1日或之前的创建日期”。使用以下WHERE子句。这其中的第二件总是会回来的,那就是这个月的第一天。

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

票数 1
EN

Stack Overflow用户

发布于 2013-09-16 14:36:14

最好不要使用datepart。函数在where子句中减慢性能。更好的方法是使用这种方法。

代码语言:javascript
复制
where creationdate >= the start of your date range
and creationdate < the day after your date range

这不仅会运行得更快,它还将考虑到创世日期的时间部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18830501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档