首页 > 解决方案 > 在东西查询中以逗​​号分隔获取所有开始日期和结束日期

问题描述

嗨,我的开始日期为 GetDate()-5,结束日期为 GetDate()

我在变量中传递这个日期,即这个日期没有存储在任何表中,所以我怎样才能得到记录

GetDate()-5,GetDate()-4,GetDate()-3,GetDate()-2,GetDate()-1,GetDate()

在 sql 服务器中

我试过下面的查询是完全错误的,有人可以建议我吗

declare @startdate date
declare @enddate date
set @startdate =GETDATE()-5
set @enddate =GETDATE()

  STUFF((SELECT DISTINCT ','+CONVERT(VARCHAR, CONVERT(DATE,GETDATE()-5))
  FROM [Table]--What should be here?
  WHERE CONVERT(date,AETE.TimeEntryDate) between CONVERT(DATE,@startdate)
  AND CONVERT(DATE, @enddate)       
  FOR XML PATH('')), 1,1,'')

标签: sql-server-2012

解决方案


CTE 在这里可能会派上用场:

    declare @startdate date = dateadd(D, -5, getdate())
declare @enddate date = getdate();

with cte(d) as (
    select @startdate
    union all
    select dateadd(D, 1, d)
    from cte
    where d < @enddate
)
select stuff((
select ', ' + convert(nvarchar(255), d, 101)
from cte
for xml path('')), 1, 2, '')

给你:

08/09/2018, 08/10/2018, 08/11/2018, 08/12/2018, 08/13/2018, 08/14/2018

请注意,这会给您 6 天——比今天少 5 天,以及今天的日期。


推荐阅读