【发布时间】:2015-12-28 01:49:00
【问题描述】:
我需要在五个单独的列表中加载过去五周的信息,无论是什么日期。所以这周,我需要在这一周之前的最后 5 周。下周我需要在那之前的最后 5 周,其中包括这一周。如果这有意义并且不会让您感到困惑?
所以基本上:
..BETWEEN '2015-09-21' AND '2015-09-27'
必须替换为:
SELECT DATEADD(wk,DATEDIFF(wk,7,GETDATE()),0) AND DATEADD(wk,DATEDIFF(wk,7,GETDATE()),6)
这很好用,第二周也一样:
SELECT DATEADD(wk,DATEDIFF(wk,14,GETDATE()),0) AND DATEADD(wk,DATEDIFF(wk,14,GETDATE()),6)
但是从那以后,它不再起作用了。我得到的结果与手动添加日期不同。
SELECT DATEADD(wk,DATEDIFF(wk,21,GETDATE()),0) AND DATEADD(wk,DATEDIFF(wk,21,GETDATE()),6)
我的代码有问题吗?
【问题讨论】:
-
大概你正在使用 SQL Server。您应该这样标记问题。
-
查看此链接会有所帮助:stackoverflow.com/questions/6089960/…
-
你得到什么结果?查询
SELECT DATEADD(wk,DATEDIFF(wk,21,GETDATE()),0), DATEADD(wk,DATEDIFF(wk,21,GETDATE()),6)是否返回了意外的内容? -
@Greg,您的专栏中有时间部分还是只有日期?您是否尝试添加 7 天而不是 6 天?
DATEADD(wk,DATEDIFF(wk,21,GETDATE()),7) -
可能在前两周你在周日没有任何结果。对于
date类型,2015-09-27 00:00:00将计算所有结果,但不适用于datetime类型。
标签: sql-server