问题描述
嗨,汤姆,
我们有休假管理系统,用户可以选择一个日期范围来安排他的休假。
例如用户a输入日期为2019年5月5日至2019年7月月23日。稍后,他可以取消从2019年5月30日至2019年5月31日的几天。
我如何将他的假期映射为2019年5月5日至2019年5月29日,然后将01-6月-2019映射为23-7月-2019。
用户可以通过给出日期范围来取消一天或多天。
谢谢你的帮助
我们有休假管理系统,用户可以选择一个日期范围来安排他的休假。
例如用户a输入日期为2019年5月5日至2019年7月月23日。稍后,他可以取消从2019年5月30日至2019年5月31日的几天。
我如何将他的假期映射为2019年5月5日至2019年5月29日,然后将01-6月-2019映射为23-7月-2019。
用户可以通过给出日期范围来取消一天或多天。
谢谢你的帮助
专家解答
这里有一种解决方法:
每天存储一个用户被安排工作。用一列来说明这是否是假日,例如:
根据需要加载每个员工的工作日。
有了这个,当他们请求假日运行时:
如果他们想取消假期内的天数,请在以下范围内将这些天数设置回 “非假期”:
这避免了对现有日期范围进行任何操作的需要。
如果您想向某人显示他们预订的假期,请运行:
每天存储一个用户被安排工作。用一列来说明这是否是假日,例如:
create table employee_work (
employee_id integer
not null,
working_day date
not null
check ( working_day = trunc ( working_day ) ),
is_holiday integer
default 0
not null
check ( is_holiday in ( 0, 1 ) ),
primary key (
employee_id, working_day
)
);根据需要加载每个员工的工作日。
有了这个,当他们请求假日运行时:
update employees set is_holiday = 1 where employee_id = :emp and working_day between to_date ( :start_dt,) and to_date ( :end_dt, );
如果他们想取消假期内的天数,请在以下范围内将这些天数设置回 “非假期”:
update employees set is_holiday = 0 where employee_id = :emp and working_day between to_date ( :start_dt,) and to_date ( :end_dt, );
这避免了对现有日期范围进行任何操作的需要。
如果您想向某人显示他们预订的假期,请运行:
select * from employees where employee_id = :emp and is_holiday = 1
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




