Wenn Sie eine numbers table (den Link klicken, um eine zu erstellen, wenn Sie es nicht tun) ...
create table test(
startTime time
, endTime time
)
insert into test
select '11:00', '14:00'
select
dateadd(hh, n.n, t.startTime) as times
from test t
inner join Numbers n
-- assuming your numbers start at 1 rather than 0
on n.n-1 <= datediff(hh, t.startTime, t.endTime)
Wenn dies spezialisiert ist, können Sie eine Stunden-Tabelle mit nur 24 Werten erstellen.
create table HoursInADay(
[hours] time not null
, constraint PK_HoursInADay primary key ([hours])
)
-- insert
insert into HoursInADay select '1:00'
insert into HoursInADay select '2:00'
insert into HoursInADay select '3:00'
insert into HoursInADay select '4:00'
insert into HoursInADay select '5:00'
insert into HoursInADay select '6:00'
insert into HoursInADay select '7:00'
...
select
h.[hours]
from test t
inner join HoursInADay h
on h.[hours] between t.startTime and t.endTime
Speichern Sie einfach die 'OpenTime' und die' ClosedTime' in der db, und machen Sie Ihre Vergleiche in Code?!?! –
Welche Version von SQL Server? – Lamak
@Lamak: 2008 r2 – Limey