Sql Oracle Apex交互式网格中的验证

Sql Oracle Apex交互式网格中的验证,sql,validation,plsql,oracle-apex,oracle-apex-20.2,Sql,Validation,Plsql,Oracle Apex,Oracle Apex 20.2,我有一个用于输入时间的时间输入网格。 网格由工作日期的日期、时间内日期、时间外日期组成 一个人每天可以输入多次打孔,因此在2021年6月1日,一个人可以有3次打孔 我想验证的是,当用户输入时间时,检查输入时间和输出时间是否重叠 比如说 我的代码: SELECT a.* FROM (SELECT * FROM timepunches ORDER BY punchid) a WHERE EXISTS (SELECT 1 FROM

我有一个用于输入时间的时间输入网格。 网格由工作日期的日期、时间内日期、时间外日期组成

一个人每天可以输入多次打孔,因此在2021年6月1日,一个人可以有3次打孔

我想验证的是,当用户输入时间时,检查输入时间和输出时间是否重叠

比如说

我的代码:

SELECT a.*
FROM   (SELECT *
        FROM  timepunches
        ORDER BY punchid) a
WHERE  EXISTS (SELECT 1
               FROM   timepunches b
               WHERE  TO_DATE(to_char(B.in_time,'DD-MM-YYYY HH:MIPM'),'DD-MM-YYYY HH:MIPM') <= TO_DATE(to_char(A.out_time,'DD-MM-YYYY HH:MIPM'),'DD-MM-YYYY HH:MIPM')
               AND    TO_DATE(to_char(B.out_time,'DD-MM-YYYY HH:MIPM'),'DD-MM-YYYY HH:MIPM')   >= TO_DATE(to_char(A.in_time,'DD-MM-YYYY HH:MIPM'),'DD-MM-YYYY HH:MIPM')
               AND    b.punchid < a.punchid);
正如你在上面看到的,时间都是重叠的。时间中包括日期,因为一个人可以在某一天打卡,在另一天打卡,所以需要考虑很多事情。您还可以看到,它可能需要处理多行

提前谢谢你

为什么要从日期到字符再到日期重复播放?