有很多类似于这个的问题,但是我无法找到符合我要求的问题。如果我错过了一个,那就道歉......
我有StartDate
和EndDate
,如此:
Id StartDate EndDate
1 2015-02-05 09:00:00.0000000 +01:00 2015-02-09 17:30:00.0000000 +01:00
现在,我试图在这两个值之间列出日期和时间(包括StartDate
和EndDate
),如下所示:
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