【问题标题】:Find previous sunday date algorithm查找上周日日期算法
【发布时间】:2012-06-21 13:13:14
【问题描述】:

我在网上找到了几个例子,但我不太明白它是如何工作的。例如

     SELECT DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0)

我什至不确定它是否符合我的要求。

我需要的是,当查询执行时,SELECT * from xTable WHERE xDate 可以在两个日期之间。上周日和下周日(当前周)。我可以用什么来自动找到它?请解释一下,因为我是 SQL 新手。

【问题讨论】:

  • 我不明白为什么有人会以 “不是一个真正的问题” 投票支持结束。很清楚 OP 想知道什么:如何获取本周的记录。但问题是,你有没有试过查询,它返回了错误的结果?
  • 它实际上返回了一个日期,我不知道如何使用这个查询来获得我的结果。

标签: sql-server-2008 tsql date


【解决方案1】:

为了理解这个查询,我进行了深入研究

 SELECT DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0)

并用它来检索前一个星期一。现在我可以简单地DATEADD 6 天来获得一个完整的一周。

我使用的解决方案:

       Set @Monday =  DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0)
       Set @Sunday =  DATEADD(dd, 06, @Monday)

问题解决了。

【讨论】:

  • 如果您的表格中没有未来的日期,这是最有效的方法:SELECT * from xTable WHERE xDate >= DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0)。如果您还想限制未来的日期(超过一周):SELECT * from xTable WHERE xDate >= DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0) AND xDate < DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 7)
  • 它的报告实际上忘了提及。因此,如果有人想重印两个月前的报告,恐怕会有一些未来的日期。但是我试过了,如果不是为了未来的日期问题,它可以完美地工作。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多