Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Oracle中仅使用滞后检查天数差异_Oracle - Fatal编程技术网

在Oracle中仅使用滞后检查天数差异

在Oracle中仅使用滞后检查天数差异,oracle,Oracle,我需要一点帮助,但我非常接近实现我所期待的感谢。然而,这并不完全是我所需要的输出 使用滞后来检查日期的差异,我需要滞后来忽略时间上的差异,只考虑日期。换句话说,它应该只考虑日历日,而不是24小时。有没有办法做到这一点 以下是我目前得到的信息: SELECT EMPLOYEE_ID, SUM(DIFFERENCE) AS DAYS, DATE_IN, DATE_OUT FROM ( SELECT * FROM ( SELECT EMPLOYEE_ID,

我需要一点帮助,但我非常接近实现我所期待的感谢。然而,这并不完全是我所需要的输出

使用滞后来检查日期的差异,我需要滞后来忽略时间上的差异,只考虑日期。换句话说,它应该只考虑日历日,而不是24小时。有没有办法做到这一点

以下是我目前得到的信息:

SELECT EMPLOYEE_ID,
SUM(DIFFERENCE) AS DAYS,
DATE_IN,
DATE_OUT
FROM (
    SELECT *
        FROM (
          SELECT EMPLOYEE_ID, DATE_IN, DATE_OUT, ACTIVE,
          NVL(DATE_IN - LAG(DATE_IN) OVER (PARTITION BY EMPLOYEE_ID, ACTIVE ORDER BY DATE_IN), 1) AS DIFFERENCE
    FROM MY_TABLE
    WHERE MY_TABLE.ACTIVE = 1
    AND TO_CHAR(DATE_IN, 'YYYY-MM-DD') >= 'user-selected date'
    AND TO_CHAR(DATE_OUT, 'YYYY-MM-DD') <= 'other user-selected date'
    )
)
GROUP BY EMPLOYEE_ID, DATE_IN, DATE_OUT
ORDER BY DATE_IN
我要找的是:

这里的差异应该都是1,时间应该被忽略。我试着在延迟中使用CHAR(DATE_IN…)来去除时间部分,但当然这不起作用:p


谢谢你的帮助。

为了谷歌人:

 TRUNC(DATE_IN) - LAG(TRUNC(DATE_IN)
关键是忽略时间,只在几天内得到结果


感谢一匹没有名字的马给出了答案,并在此过程中教了我关于TRUNC的知识:)

@a\u horse\u with\u no\u name如此简单,正是我想要的。。。非常感谢。
 TRUNC(DATE_IN) - LAG(TRUNC(DATE_IN)