Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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
从SQL/ORACLE中日期类型的列中提取日期_Sql_Oracle - Fatal编程技术网

从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甲骨文顾问:PIf
DateColumn
is
20
SYSDATE
is
4
是否在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;