oracle数据库计算两个时间类型字段值的时间差,并转换为合适的时间格式显示(按时分秒展示)

1.背景

   数据库表名为tablename。其中两个字段为startdate(开始时间),closedate(结束时间)。


2.需求

   建立试图,查询出间隔时间并显示为自定义的格式。


3.sql语句


 select t.*, round(to_number(t.closedate-t.startdate)*24*60*60)||'秒' "在线时长(秒)",

(

decode((trunc(to_number(t.closedate-t.startdate)*24)),null,null,0,null,trunc(to_number(t.closedate-t.startdate)*24)||'时')

||

decode((trunc(mod((to_number(t.closedate-t.startdate)*24*60),60))),null,null,0,null,trunc(mod((to_number(t.closedate-t.startdate)*24*60),60))||'分')

||

decode((trunc(mod((to_number(t.closedate-t.startdate)*24*60*60),60))),null,'无',trunc(mod((to_number(t.closedate-t.startdate)*24*60*60),60))||'秒'))                                                                 "登录时长(显示为   **时**分**秒  的形式)",


(select count(*)  from tablename b where b.userbiscode=t.userbiscode and to_char(b.startdate,'yyyy-mm-dd')=to_char(sysdate,'yyyy-mm-dd'))                                                          "今日登录次数",

(select closedate from 

     (select a.closedate,rownum as rn  from  

       (select closedate from tablename where to_char(startdate,'yyyy-mm-dd')=to_char(sysdate,'yyyy-mm-dd') order            by startdate desc)    a) 

              where rn<2)                                                                                   "最后登录时间"

from tablename t 

        WHERE to_char(t.startdate,'yyyy-mm-dd')=to_char(sysdate,'yyyy-mm-dd') order by t.startdate desc;


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值