oracle统计用户在线时长,精确到秒 需求: 使用pl/sql写一段程序统计用户在线时间,精确到分,最好是秒。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 统计用户在线时间为什么用ORACLE额..在应用程序上统计不行么? 在做一小练习,并不实际应用。但是刚接触oracle,不知道具体的函数应用。我想应该用触发器,当用户登录的时候自动把系统时间存在一个表里,然后统计的时候与其相见就可以了。但是因为现在对oracle不熟悉,无法写出好的代码来。 --求在线时间其实就是求两个日期的差值,精确度不一样而已:--分别求相隔具体值:11:16:14 SQL> select extract(day from edt-sdt) day, 2 extract(hour from edt-sdt) hour, 3 extract(minute from edt-sdt) minute, 4 extract(second from edt-sdt) second 5 from (select to_timestamp('2011-05-27 07:12:21','yyyy-mm-dd hh24:mi:ss.ff') sdt, 6 to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') edt 7 from dual) 8 / DAY HOUR MINUTE SECOND---------- ---------- ---------- ---------- 0 4 3 53--计算在线分钟:11:16:14 SQL> select day*24*60+hour*60+minute+second/60 minute from 2 (select extract(day from edt-sdt) day, 3 extract(hour from edt-sdt) hour, 4 extract(minute from edt-sdt) minute, 5 extract(second from edt-sdt) second 6 from (select to_timestamp('2011-05-27 07:12:21','yyyy-mm-dd hh24:mi:ss.ff') sdt, 7 to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') edt 8 from dual)) 9 / MINUTE----------243.883333--统计计算在线秒数:11:16:14 SQL> select day*24*60*60+hour*60*60+minute*60+second second from 2 (select extract(day from edt-sdt) day, 3 extract(hour from edt-sdt) hour, 4 extract(minute from edt-sdt) minute, 5 extract(second from edt-sdt) second 6 from (select to_timestamp('2011-05-27 07:12:21','yyyy-mm-dd hh24:mi:ss.ff') sdt, 7 to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') edt 8 from dual)) 9 / SECOND---------- 14633 楼主想要问的重点是什么? 如何通过ORACLE获取 登录、退出时间? 如何计算登录时长?如果只是个人研究,完全没必要执着于通过ORACLE获取用户登录、退出时间,这是应用做的事,实际业务中,没人这么要求。而计算登录时长,也只是一个表、一个计算公式,不存在什么难点。 我的描述好像很清楚了。实现的功能:统计用户在线时间约束:时间精确到秒 使用pl/sql语言实现我真的挺想问您有没有认真的看一下我的问题,是不是太浮躁了那。 oracle更新表的问题! 存储过程名称为参数,如何使用EXECUTE immediate执行 oracle安装时在创建数据库的时候复制文件在2%的时候就不动了。 oracle10g 函数怎样调用存储过程 返回值?急 ORACLE EXP导出方法求助? 求助高手 关于数据表中的数据批量更改的问题 想了一下午了 实在没招了 求教如何写这条sql oracle中"数据库链接"到底是个什么东东? 字符的问题,急死我了!!! 没有发现客户端与网络组件,急急急!!! 用一条sql语句查询两张表中的数据 Vmware+Linux Redhat 5+Oracle10g RAC安装Clusterware问题
我想应该用触发器,当用户登录的时候自动把系统时间存在一个表里,然后统计的时候与其相见就可以了。但是因为现在对oracle不熟悉,无法写出好的代码来。
--求在线时间其实就是求两个日期的差值,精确度不一样而已:
--分别求相隔具体值:
11:16:14 SQL> select extract(day from edt-sdt) day,
2 extract(hour from edt-sdt) hour,
3 extract(minute from edt-sdt) minute,
4 extract(second from edt-sdt) second
5 from (select to_timestamp('2011-05-27 07:12:21','yyyy-mm-dd hh24:mi:ss.ff') sdt,
6 to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') edt
7 from dual)
8 /
DAY HOUR MINUTE SECOND
---------- ---------- ---------- ----------
0 4 3 53
--计算在线分钟:
11:16:14 SQL> select day*24*60+hour*60+minute+second/60 minute from
2 (select extract(day from edt-sdt) day,
3 extract(hour from edt-sdt) hour,
4 extract(minute from edt-sdt) minute,
5 extract(second from edt-sdt) second
6 from (select to_timestamp('2011-05-27 07:12:21','yyyy-mm-dd hh24:mi:ss.ff') sdt,
7 to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') edt
8 from dual))
9 /
MINUTE
----------
243.883333
--统计计算在线秒数:
11:16:14 SQL> select day*24*60*60+hour*60*60+minute*60+second second from
2 (select extract(day from edt-sdt) day,
3 extract(hour from edt-sdt) hour,
4 extract(minute from edt-sdt) minute,
5 extract(second from edt-sdt) second
6 from (select to_timestamp('2011-05-27 07:12:21','yyyy-mm-dd hh24:mi:ss.ff') sdt,
7 to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') edt
8 from dual))
9 /
SECOND
----------
14633
而计算登录时长,也只是一个表、一个计算公式,不存在什么难点。
约束:时间精确到秒
使用pl/sql语言实现
我真的挺想问您有没有认真的看一下我的问题,是不是太浮躁了那。