Sql 如何选择最近5天的日期?
如何选择给定日期之前的最后5天 给出日期:2015-11-14 select查询应返回如下输出-Sql 如何选择最近5天的日期?,sql,sql-server,Sql,Sql Server,如何选择给定日期之前的最后5天 给出日期:2015-11-14 select查询应返回如下输出- 2015-11-14 2015-11-13 2015-11-12 2015-11-11 2015-11-10 您可以使用递归CTE: with dates as ( select cast(getdate() as date) as dte union all select dateadd(day, -1, dte) from dates
2015-11-14
2015-11-13
2015-11-12
2015-11-11
2015-11-10
您可以使用递归CTE:
with dates as (
select cast(getdate() as date) as dte
union all
select dateadd(day, -1, dte)
from dates
where datediff(day, dte, getdate()) <= 4
)
select *
from dates
order by dte desc;
显然,您可以引用您想要的任何其他日期,而不是getdate。您的示例表明,当前日期是2015-11-14,这是一段时间前的日期。您可以使用下面的理货表
Declare @dt date = getdate()
Select top (5) Dt = DateAdd(day, -Row_number() over (order by (select null)), @dt) from master..spt_values
最后5天是什么?说真的……如果你希望得到任何帮助,你需要提供一定程度的信息。最后5天是什么?你需要更具体一些。您指的是在给定日期之前的5天吗?@SeanLange jinx。是的,指在给定日期之前的5天。您的起点是当前日期还是数据库中的某个记录?如果不存在值,是否需要生成值,或者是否希望最近5天有记录?如果您引用的是表中的某些内容,请给我们一个列的小样本,这样我们就可以在答案中使用一致的命名。
DECLARE @fromData date = getdate()
DECLARE @daysBack int = 5
;WITH dates AS (
SELECT 1 as LP, @fromData as Dates
UNION ALL
SELECT LP + 1, DATEADD(DAY,-1,@fromData)
FROM dates
WHERE LP < @daysBack
)
SELECT *
FROM dates
DECLARE @startdate date = getdate();
DECLARE @NbDays int = 5;
WITH ListDate AS (
SELECT 1 as LP, @startdate as Dt
UNION ALL
SELECT LP + 1, DATEADD(DAY,-1,Dt)
FROM ListDate
WHERE LP < @NbDays
)
SELECT * FROM ListDate;