【问题标题】:How to get week ending date of a given date returned from a DateAdd expression如何获取从 DateAdd 表达式返回的给定日期的周结束日期
【发布时间】:2010-03-16 19:41:35
【问题描述】:

不确定如何获取我当前的表达式并获取一周的结束日期。

我当前的表达式返回日期,从今天开始一周。

DateAdd(DateInterval.WeekOfYear, 1, today())

我想做的是改为返回该周的结束日期(星期六)。

我需要在这个表达式中添加什么才能得到想要的结果?

谢谢!

好的,看起来我明白了,但它很难看。谁能帮我简化一下?

以下是我所拥有的,基于将 Raj 的示例转化为表达式:

="One Week Projected Backlog w/e "& DateAdd(DateInterval.Day, -1 * DatePart(DateInterval.WeekDay, (DateAdd(DateInterval.WeekOfYear, 1, today()))) + 7, (DateAdd(DateInterval.WeekOfYear, 1, today())))

【问题讨论】:

    标签: sql-server dateadd


    【解决方案1】:

    试试这个

    Declare @DateValue DateTime = '3/1/2010'
    
    select DATEADD (D, -1 * DatePart (DW, @DateValue) + 7, @DateValue)
    

    我基本上计算了传入日期是一周中的哪一天,然后用 -1 乘数软计算一周的开始,并通过加 7 向前遍历到星期六。

    当然,这只有在 SQL Server 设置为从星期日开始的那一周时才有效

    对于 SQL Server 报告服务,我认为这应该适用于本周星期六

    DATEADD (DateInterval.Day, -1 * DatePart (DateInterval.DayOfWeek, Today()) + 7, Today())
    

    下周星期六

    DATEADD (DateInterval.Day, -1 * DatePart (DateInterval.DayOfWeek, Today()) + 14, Today())
    

    【讨论】:

    • 谢谢,所以 DateValue 将是我的初始表达式,像这样吗?声明@DateValue DateTime = DateAdd(DateInterval.WeekOfYear, 1, today())
    • 哦,还有,这是在报表的表达式中,而不是在标准查询中。我最初的表达看起来像这样:="One Week Projected Backlog w/e "& DateAdd(DateInterval.WeekOfYear, 1, today())
    • 感谢 Raj,是的,一旦我确定了这一点,我一定会标记答案。您提供的 SSRS 代码返回当前一周的结束日期,而不是一周结束日期。我会看看我能不能让它工作一个星期......
    • ...实际上,它最终与我昨天在回答中提出的相同。
    【解决方案2】:

    怎么样?

    select dateadd(ww,-2,'1-27-2014')+4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      相关资源
      最近更新 更多