Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.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 sql查找以小时为单位的两个时间戳之间的差异_Sql_Oracle9i - Fatal编程技术网

需要使用oracle sql查找以小时为单位的两个时间戳之间的差异

需要使用oracle sql查找以小时为单位的两个时间戳之间的差异,sql,oracle9i,Sql,Oracle9i,以上是我的查询,我需要以小时格式查找最大时间和最小时间之间的差异。我试着使用extract和(-),但没有任何效果。请帮助我查找小时格式的差异。为什么要将值转换为字符串以获得差异 SELECT MAX( CASE WHEN CLKTRANTYPE_ID = 1 THEN MIN((TO_CHAR (CLKTRANPRO_TIME,'YYYY.MM.DD HH24:MI:SS'))) END) AS MIN_TIME , MAX( CASE WHEN CLK

以上是我的查询,我需要以小时格式查找最大时间和最小时间之间的差异。我试着使用extract和(-),但没有任何效果。请帮助我查找小时格式的差异。

为什么要将值转换为字符串以获得差异

SELECT MAX(
  CASE
    WHEN CLKTRANTYPE_ID = 1
    THEN MIN((TO_CHAR (CLKTRANPRO_TIME,'YYYY.MM.DD HH24:MI:SS')))
  END) AS MIN_TIME ,
  MAX(
  CASE
    WHEN CLKTRANTYPE_ID = 2
    THEN MAX((TO_CHAR(CLKTRANPRO_PROC_DT,'YYYY.MM.DD HH24:MI:SS')) )
  END) AS MAX_TIME 
FROM CLOCK_TRAN_PROCESSED
WHERE WRKS_ID =1652201
GROUP BY WRKS_ID,CLKTRANTYPE_ID;
时差

select (extract(day from max(CLKTRANPRO_PROC_DT) - min(CLKTRANPRO_TIME)) * 24 +
        extract(hour from max(CLKTRANPRO_PROC_DT) - min(CLKTRANPRO_TIME))
       ) as diff_hours
上述查询的结果应为2.5小时

获得差异的简单方法

select 24 * (to_date('2017-07-07 22:00', 'YYYY-MM-DD hh24:mi') 
             - to_date('2017-07-07 19:30', 'YYYY-MM-DD hh24:mi')) diff_in_hours 
       from dual;

没有逻辑来获取差异…除了获取最大值和最小值之外。选择提取(从(最大值(CLKTRANTYPE_ID=2时的情况)到最大值(CLKTRANPRO_PROC_DT))结束的小时数)-最大值(CLKTRANTYPE_ID=1时的情况到最小值(CLKTRANPRO_TIME)结束的情况)从处理的时钟(WRKS_ID=1652201按WRKS_ID分组),CLKTRANTYPE_ID;使用上述代码时出现“ORA-30076:提取源的提取字段无效”错误
select Date1 - Date2 from your_Table;