Jeśli masz numbers table (kliknij w link, aby utworzyć jedną, jeśli nie) ...
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)
Jeśli jest to wyspecjalizowane, możesz utworzyć tabelę godzin z tylko 24 wartościami.
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
Po prostu przechowuj '' OpenTime' i 'ClosedTime' w bazie danych i wykonuj porównania w kodzie?!?! –
Jaką wersję programu SQL Server? – Lamak
@Lamak: 2008 r2 – Limey