Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何选择最近5天的日期?_Sql_Sql Server - Fatal编程技术网

Sql 如何选择最近5天的日期?

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

如何选择给定日期之前的最后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
      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;