【发布时间】:2018-10-28 09:47:53
【问题描述】:
我正在尝试使用Oracle sql 检查或验证某个范围内的日期,并尝试了以下操作:
SELECT * FROM VW_LEAVEDETAILS m WHERE M.EMPNO = '123456'
AND M.LV_FROM >= '17-OCT-2018' AND M.LV_TO <= '18-OCT-2018';
Date Range: Start - End
20-OCT-2018 - 22-OCT-2018 //This worked when checked
这适用于特定日期范围。但是如果我有以下日期范围怎么办
Date Range: Start - End
22-OCT-2018 - 22-OCT-2018 //Date range 1 - in Database Table
18-OCT-2018 - 22-OCT-2018 //Date range 2 - User input
22-OCT-2018 - 24-OCT-2018 //Date range 2 - User input; Even this should be validated
请参阅上述 22-OCT-2018 已为 数据库表 日期范围分配,每当尝试再次分配时,应该抛出错误或至少拉高范围。我正在尝试像这样愚蠢的事情,相反的但卡住了:
SELECT * FROM VW_LEAVEDETAILS m WHERE M.EMPNO = '123456'
AND M.LV_FROM >= '17-OCT-2018' AND M.LV_TO <= '18-OCT-2018'
OR M.LV_TO >= '17-OCT-2018' AND M.FROM <= '18-OCT-2018';
注意:基本上是用于休假管理系统的。因此,只要在该范围内分配了一个日期,它就应该验证。以下三种情况:
LV_FROM 在用户开始日期和用户结束日期之间LV_TO 在用户开始日期和用户结束日期之间LV_FROM 在用户开始日期之前,LV_TO 在用户结束日期之后
感谢@Corion 提供编辑建议 - 谢谢。
【问题讨论】:
-
请添加更多示例,并解释为什么示例数据应包含在结果中或排除在外。
-
基本上是用于休假管理系统的。因此,只要在该范围内分配了一个日期,它就应该验证@Corion。
-
我们不知道您对“休假管理系统”的需求是什么。请花一些精力描述实际的业务规则。