qq_17811469 2021-12-07 21:26 采纳率: 60%
浏览 177
已结题

Oracle 函数或者 SQL查询

Oracle 中存有三条数据 分别如下:

img

我需要根据如下时间区间和地址匹配记录
起算点:2021-01-22 12:00:00
结算点:2021-01-27 23:45:00
地址:24
想要得到的结果是

img

我这里的用时 是换算成了分钟

如果起算点 >=开始时间 用于计算用时的起算点 = 起算点
如果起算点 < 开始时间 用于计算用时的起算点 = 开始时间

如果结算点 <= 结束时间 用于计算用时的结算点= 结算点
如果结算点 > 结束时间 用于计算用时的结算点= 结束时间

这个需求如何用 SQL查询或者函数实现。

  • 写回答

6条回答 默认 最新

  • togolife 2021-12-07 23:45
    关注
    获得7.15元问题酬金
    1. 计算分钟函数
    round(to_number(end-date-start_date)*1440)
    
    
    1. 计算一条记录时间
    round(
        to_number(
            to_date(min(结束时间, '2021-01-27 23:45:00'), 'yyyy-mm-dd hh24:mi:ss') -
            to_date(max(开始时间, '2021-01-22 12:00:00'), 'yyyy-mm-dd hh24:mi:ss')
        ) * 1440
    )
    
    
    
    1. 汇总
    select '24' as '地址', '2021-01-22 12:00:00' as '开始时间', '2021-01-27 23:45:00' as '结束时间',
    sum(round(
        to_number(
            to_date(min(结束时间, '2021-01-27 23:45:00'), 'yyyy-mm-dd hh24:mi:ss') -
            to_date(max(开始时间, '2021-01-22 12:00:00'), 'yyyy-mm-dd hh24:mi:ss')
        ) * 1440
    )) from table where 地址 = 24;
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月15日
  • 创建了问题 12月7日

悬赏问题

  • ¥15 代码的修改,添加和运行完善
  • ¥15 krpano-场景分组和自定义地图分组
  • ¥15 lammps Gpu加速出错
  • ¥15 关于PLUS模型中kapaa值的问题
  • ¥15 关于博途V17进行仿真时无法建立连接问题
  • ¥15 机器学习教材中的例题询问
  • ¥15 求.net core 几款免费的pdf编辑器
  • ¥15 为什么安装HCL 和virtualbox之后没有找到VirtualBoxHost-OnlyNetWork?
  • ¥15 C# P/Invoke的效率问题
  • ¥20 thinkphp适配人大金仓问题