我有一个DATE
类型的列。如何将其与SYSDATE
的小时字段进行比较以执行某些操作?
列名:DateColumn
- 类型为DATE
要求:
考虑来自DateColumn
的小时数的表格中的搜索条件,并应检查SYSDATE
中的小时数是否小于10小时
例如,如果DateColumn
中的小时数为15
且SYSDATE
的当前小时数为20
,则小时差异小于10小时,则应满足条件。
我需要这样的东西:
SELECT EMP_ID FROM EMPLOYEE WHERE SYSDATE(something to extract hours) -
DATECOLUMN(something to consider hours) < 10;
编辑: 它应该考虑天数之间的差异。
如果DateColumn
20-09-2017 15:00:000
而SYSDATE
21-09-2017 20:00:000
为29
,则应该会失败,因为小时差为dim3 gridXY(gridX, gridY);
答案 0 :(得分:2)
SELECT EMP_ID FROM EMPLOYEE WHERE TO_NUMBER(TO_CHAR(sysdate,'HH24')) - TO_NUMBER(TO_CHAR(sysdate,'HH24')) < 10;
答案 1 :(得分:2)
如果您需要考虑20:00
仅在04:00
之前8小时,那么您可以使用:
SELECT *
FROM employees
WHERE ABS( MOD( ( SYSDATE - DateColumn ) * 24, 24 ) ) < 10;
如果您还需要包含日期:
SELECT *
FROM EMPLOYEES
WHERE DateColumn BETWEEN SYSDATE - INTERVAL '10' HOUR
AND SYSDATE + INTERVAL '10' HOUR;
答案 2 :(得分:0)
您可以使用extract
:
SELECT emp_id
FROM employee
WHERE EXTRACT(HOUR FROM SYSDATE) - EXTRACT(HOUR FROM datecolumn) < 10;