从SQL/ORACLE中日期类型的列中提取日期
我有一列类型为从SQL/ORACLE中日期类型的列中提取日期,sql,oracle,Sql,Oracle,我有一列类型为DATE。如何将其与SYSDATE的小时字段进行比较以执行某些操作 列名:DateColumn-类型为DATE 要求: 表中的搜索条件考虑了DateColumn中的小时数,并应检查它是否小于SYSDATE中小时数的10小时数 例如,如果DateColumn中的小时数为15,而SYSDATE中的当前小时数为20,则由于小时数差小于10小时,因此应满足该条件 我需要这样的东西: SELECT EMP_ID FROM EMPLOYEE WHERE SYSDATE(something t
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;
从员工的SYSDATE(提取小时数的内容)中选择EMP\u ID-
数据表(考虑时间)<10;
编辑:
它也应该考虑天数之间的差异。
如DateColumn
有20-09-2017 15:00:000
和SYSDATE
是21-09-2017 20:00:000
,它应该会失败,因为时差是29从员工中选择EMP\u ID,在哪里输入号码(到字符(系统日期,'HH24'))-到字符(到字符(系统日期,'hhh24'))<10;
SELECT EMP_ID FROM EMPLOYEE WHERE TO_NUMBER(TO_CHAR(sysdate,'HH24')) - TO_NUMBER(TO_CHAR(sysdate,'HH24')) < 10;
您可以使用:
选择emp\u id
来自员工
其中EXTRACT(从SYSDATE算起的小时)-EXTRACT(从datecolumn算起的小时)<10;
<>代码> 如果您需要考虑<代码> 20:00 仅在代码> 04:00 < /代码>前8小时,那么您可以使用:
SELECT *
FROM employees
WHERE ABS( MOD( ( SYSDATE - DateColumn ) * 24, 24 ) ) < 10;
@ShannonSeverance我是老skool甲骨文顾问:PIfDateColumn
is20
和SYSDATE
is4
是否在10小时内<代码>20+10=30=6 MOD 24
和4<6
这仅比较小时字段。我应该问清楚的。我的错。它也应该考虑日期。例如,如果DateColumn的值为20-09-2017 15:00:000,而SYSDATE的值为21-09-2017 20:00:000,则它应该会失败,因为小时差为29。在oracle中,当您减去两个日期数据类型时,您会得到小时差。你能解决这个问题吗?或者你需要更多的帮助@入侵者?当我使用它时,它以天为单位显示差异:其中SYSDATE-DATECOLUMN<10-->显示过去10天。我应该如何解析它来考虑时间?一天有24个小时×60分钟×60秒,答案已经由@ MT0提供。
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;