【问题标题】:find free time in table 1 by comparing table two working time通过比较表二的工作时间找到表一中的空闲时间
【发布时间】:2013-09-03 11:33:01
【问题描述】:
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')

另一个表:

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')

现在需要给员工找一天的空闲时间。请分享我们如何才能做到这一点。

【问题讨论】:

    标签: sql sql-server sql-server-2008-r2


    【解决方案1】:

    您的数据结构应规范化为块/作业列表

    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
    ...
    

    然后,更容易找到不与现有数据相交的时间段,并且您不会将您的技术人员限制在每天有限数量的时间段内。

    【讨论】:

    • 我们以后会遵循这个。你能提供查询来检索所需的数据吗?
    • 你的数据结构太糟糕了,无法可靠地做到这一点!
    猜你喜欢
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    相关资源
    最近更新 更多