列出多行日期范围之间的单个日期/时间

时间:2015-08-27 12:55:40

标签: sql sql-server-2012

有很多类似于这个的问题,但是我无法找到符合我要求的问题。如果我错过了一个,那就道歉......

我有StartDateEndDate,如此:

Id            StartDate                            EndDate                  
1   2015-02-05 09:00:00.0000000 +01:00  2015-02-09 17:30:00.0000000 +01:00    

现在,我试图在这两个值之间列出日期和时间(包括StartDateEndDate),如下所示:

Id            StartDate                            EndDate                  
1   2015-02-05 09:00:00.0000000 +01:00  2015-02-05 17:30:00.0000000 +01:00  --does not include this date in the query below  
1   2015-02-06 09:00:00.0000000 +01:01  2015-02-06 17:30:00.0000000 +01:00    
1   2015-02-07 09:00:00.0000000 +01:01  2015-02-07 17:30:00.0000000 +01:00    
1   2015-02-08 09:00:00.0000000 +01:02  2015-02-08 17:30:00.0000000 +01:00    
1   2015-02-09 09:00:00.0000000 +01:02  2015-02-09 17:30:00.0000000 +01:00    

此表格中会有多个Id,因此将其分组也非常有用。

可以使用此表结构来完成吗?

CREATE TABLE TestDateRange (Id int identity (1,1) not null,
StartDate DATETIMEOFFSET,
EndDate DATETIMEOFFSET
UserID int)

ALTER TABLE TestDateRange ADD CONSTRAINT Id_PK PRIMARY KEY (Id)

看看上面提到的类似帖子,这段代码没有实现我想要的效果:(错过了我现在正在处理的startDate)

SELECT
    v.Id,
    d.CalendarDate
FROM
    Dates d INNER JOIN
    TestDateRange v ON
        d.CalendarDate >= v.StartDate AND
        d.CalendarDate <= v.EndDate

group by
    d.CalendarDate,
    v.Id

已经解决了Bulat的帮助:

 d.CalendarDate >= CAST(v.StartDate AS DATE)  AND

0 个答案:

没有答案