qq_17811469
2021-12-07 21:26
采纳率: 33.3%
浏览 168

Oracle 函数或者 SQL查询

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

img

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

img

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

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

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

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

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

7条回答 默认 最新

  • 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;
    
    
    评论
    解决 无用
    打赏 举报 编辑记录

相关推荐 更多相似问题