首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何返回数周的数据(Sun to Sun)

如何返回数周的数据(Sun to Sun)
EN

Stack Overflow用户
提问于 2011-07-20 07:09:45
回答 2查看 72关注 0票数 0

我正在尝试返回一些基于一系列周的数据。这将是一份SSRS报告。

例如,我需要返回从7月3日到7月9日(周日-周六)的所有行,将其命名为Week of the month。然后是7月10日到7月16日,也就是第二周,以此类推。最困难的部分是让它在两个月之间继续。例如,6月26日到7月2日。

我确信我可以使用DATEPART以某种方式做到这一点,但我真的不知道如何做。有人能提供帮助吗?

提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-20 07:14:45

DATEPART(week, DateField)将给你一年中的一周,这将涵盖你的标准。一个月中的星期不是一个很好的标准,因为它是如此的无定形。

您可以通过返回DATEPART(week, '7/1/2011')或任何其他方法来获取该月第一个月的一年中的第几周,这将为您提供一个起点。

编辑:

对于评论中的其他标准:

代码语言:javascript
复制
SELECT <fields>
FROM MyTable
WHERE YEAR(DateField) = 2011
AND DATEPART(week, Datefield) BETWEEN 
    DATEPART(week, '6/1/2011') AND DATEPART(week, (DATEADD(DAY, -1, (DATEADD(Month, 1,     '6/1/2011')))))

您可能想要检查右括号的计数,但基本上这是这样说的:

  • Year 2011
  • Week of 6/1/2011至Week of 6/30/2011

额外的日期计算将达到7/1/2011 (月+1),然后返回一天到6/30/2011。另一种方法是对每个月的日期间隔进行硬编码。通过这种方式,您还可以参数化日期并连接,如下所示

CAST(@Month + '/1/' + @Year as smalldatetime)

票数 1
EN

Stack Overflow用户

发布于 2011-07-20 07:20:01

我建议使用类似于日期维度的东西。你如何做到这一点的例子有很多。这里有一个:http://prologika.com/CS/forums/p/517/2094.aspx

好吧,我会给出一个更准确的答案,因为还没有人留下任何东西

代码语言:javascript
复制
Declare @myDate datetime = getdate()

select DATEPART(week, @myDate) - DATEPART(week,CONVERT(DATETIME, DATENAME(mm, @myDate)+"/01/"+ DATENAME(yyyy, @myDate) ))-1

这应该会给你一个很好的近似值,你可能想要检查我的父母。

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

https://stackoverflow.com/questions/6755194

复制
相关文章

相似问题

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