/ / nájsť voľný čas v tabuľke 1 porovnaním tabuľky 2 pracovného času - sql, sql-server, sql-server-2008-r2

nájdite voľný čas v tabuľke 1 porovnaním tabuľky dvoch pracovných hodín - sql, sql-server, sql-server-2008-r2

create table timetable( work_date date, tech_id int,
block_1_firsthalf_start_time datetime,  block_1_end_time datetime,
block_2_secondhalf_start_time datetime, block_2_end_time datetime,
block_3_over_time datetime, block_3_over_end_time datetime,
block_4_first_break_start_time datetime,    block_4_first_break_end_time datetime,
block_5_second_break_start_time datetime,   block_5_second_break_end_time datetime)

insert into timetable values(
"8/6/2013", 1,
"8/6/13 6:00 AM",   "8/6/13 10:00 AM",
"8/6/13 11:00 AM",  "8/6/13 6:00 PM",
"8/6/13 6:30 PM",   "8/6/13 8:00 PM"
"8/6/13 7:00 AM",   "8/6/13 8:00 AM",
"8/6/13 5:00 PM",   "8/6/13 5:30 PM")

ďalšia tabuľka:

create table jobtable(tech_id   int,Job_starting_time datetime, Job_end_time datetime)

insert into jobtable values(1,  "8/6/13 7:00 AM","8/6/13 8:00 AM")

Teraz je potrebné nájsť voľný čas za deň, akým je zamestnanec.pl, ako to dokážeme.

odpovede:

0 pre odpoveď č. 1

Vaša dátová štruktúra by mala byť normalizovaná na zoznam blokov / úloh

TechID   StartDateTime   EndDateTime
1        2013-6-8 06:00  2013-6-8 10:00
1        2013-6-8 11:00  2013-6-8 18:00
...

Potom je oveľa jednoduchšie nájsť bloky času, ktoré sa nepretínajú s existujúcimi údajmi a nebudete obmedzovať svoje technológie na obmedzený počet časových úsekov pre každý deň.