Sql server 2008 插入具有多个Id的日期范围SQL Server 2008
我有一个由Sql server 2008 插入具有多个Id的日期范围SQL Server 2008,sql-server-2008,datetime,date-range,Sql Server 2008,Datetime,Date Range,我有一个由@starDate和@EndDate定义的日期范围。我需要将每个userId的日期范围插入表中 例如,我有两个约会 @StarDate = '2012/05/02' @EndDate = '2012/05/06' 用户ID:1-2-3 我想要这些结果 UserID Date ------------------------ 1 - 2012/05/02 1 - 2012/05/03 1 - 2
@starDate
和@EndDate
定义的日期范围。我需要将每个userId
的日期范围插入表中
例如,我有两个约会
@StarDate = '2012/05/02'
@EndDate = '2012/05/06'
用户ID:1-2-3
我想要这些结果
UserID Date
------------------------
1 - 2012/05/02
1 - 2012/05/03
1 - 2012/05/04
1 - 2012/05/05
1 - 2012/05/06
2 - 2012/05/02
2 - 2012/05/03
2 - 2012/05/04
2 - 2012/05/05
2 - 2012/05/06
3 - 2012/05/02
3 - 2012/05/03
3 - 2012/05/04
3 - 2012/05/05
3 - 2012/05/06
一种方法是使用递归CTE:
with dates as (
select @StartDate as dte
union all
select dateadd(day, 1, @StartDate)
from dates
where dateadd(day, 1, @StartDate) <= @EndDate
),
users as (
select 1 as userid union all select 2 union all select 3
)
select users.userid, dates.dte
from users cross join dates;
注意:这假设开始日期和结束日期变量实际上存储为日期。否则您需要转换它们。谢谢您修复我的问题!!
with dates as (
select @StartDate as dte
union all
select dateadd(day, 1, @StartDate)
from dates
where dateadd(day, 1, @StartDate) <= @EndDate
),
users as (
select 1 as userid union all select 2 union all select 3
)
insert into table2(userid, date)
select users.userid, dates.dte
from users cross join dates;