暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 比较HH24:MI和回报率差异

ASKTOM 2020-06-23
392

问题描述

如何仅在access_history(location_id) = tour_detail (location_id) 的地方比较HH24:MI,并以分钟为单位获得差异。也许是一个函数,它接受了2个MMDDYYYY HH24:MI:SS并返回差异。如果没有相应的access_history日期,则为NULL或-999999

我知道我能做这样的事。但是我必须将值转换为数字才能进行比较。请注意,如果它们具有相同的HH24:MI,则差异可以是-分钟或0

select d 
from my_table
where to_char(d,'HH24') > '16';

select * from tour_detail 
order by tour_id, tour_time 

TOUR_ID   TOUR_TIME         LOCATION_ID 
1         06222020 01:27:55          20
1         06222020 01:55:30          15
1         06222020 02:04:09          10

create table access_history(
   employee_id number(6), 
   card_num varchar2(10),
   location_id number(4),
   access_date date,
   processed number(1) default 0
);

select * from access_history
where employee_id =1
order by access_date;

EMPLOYEE_ID    CARD_NUM    LOCATION_ID  ACCESS_DATE       PROCESSED
          1    QS0655F608  20           06222020 11:55:28         0
          1    QS0655F608  15           06222020 14:32:16         0
          1    QS0655F608  10           06222020 14:32:16         0 

专家解答

我不完全确定你想在这里做什么。

您可以通过将一个日期减去另一个日期来获得两个日期之间的天数差异。

要将其转换为分钟,请将结果乘以一天中的分钟数 (1,440),例如:

with rws as (
  select 
    to_date ( '06222020 14:32:16', 'mmddyyyy hh24:mi:ss' ) d1,
    to_date ( '06222020 02:04:09', 'mmddyyyy hh24:mi:ss' ) d2
  from dual
)
  select d1, d2, 
         round ( d1 - d2, 5 ) days_diff,
         round ( ( d1 - d2 ) * 1440 ) minutes_diff
  from   rws;
  
D1                     D2                     DAYS_DIFF   MINUTES_DIFF   
22-JUN-2020 14:32:16   22-JUN-2020 02:04:09     0.51953            748 

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论