oracel 数据库 两个时间错位相减

xianggelia 2012-03-19 10:35:18


如上图所示:
1、错位相减:time2的时间减去time1的时间,比如“2012-03-19 10:18:53” - “2012-03-19 10:09:33”
2、排序方式是 time1 desc
3、time1 desc 排序后,ID与A的内容不一定是按照顺序下来的,但一定是从大到小排下来的。
比较啰嗦

...全文
516 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yixilan 2012-03-19
  • 打赏
  • 举报
回复
10楼输出结果:
yixilan 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 xianggelia 的回复:]
引用 6 楼 xpingping 的回复:
你误解了我的意思,
比如:
ID A time1 time2
3 D202345600……[/Quote]
把test_yixl换成你自己的表名:
select b.time2 begintime, a.time1 endtime, (b.time2 - a.time1)*24*60||' minutes' res
from
(select id, a, time1, time2 , rownum as cnt from test_yixl order by time1 desc) a,
(select id, a, time1, time2 , rownum as cnt from test_yixl order by time1 desc) b
where b.cnt + 1 = a.cnt;
xpingping 2012-03-19
  • 打赏
  • 举报
回复
with tb as(
select 12 ID, 'D203456700' A, '2012-03-19 10:08:01' Time1,'2012-03-19 10:10:01' Time2 from dual union all
select 11, 'D203456600' ,'2012-03-19 10:06:01' ,'2012-03-19 10:08:01' from dual union all
select 9 ,'D203456500' ,'2012-03-19 10:04:01' ,'2012-03-19 10:06:01' from dual union all
select 8 ,'D203456300' ,'2012-03-19 10:02:01' ,'2012-03-19 10:04:01' from dual)

select prior to_date(time2,'yyyy-mm-dd hh24:mi:ss')- to_date(time1,'yyyy-mm-dd hh24:mi:ss')
from tb start with Time2='2012-03-19 10:10:01' connect by Time2=prior Time1
xianggelia 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xpingping 的回复:]
Date类型……
time2-time1
varchar
to_date(time2,'YYYY-MM-DD hh24:mi:ss')-to_date(time1,'YYYY-MM-DD hh24:mi:ss')
得到的结果的单位是天……
[/Quote]

你误解了我的意思,
比如:
ID A time1 time2
3 D202345600 10(时间格式) 11
2 D202345500 9 10


我想要的结果是:time2-time1,即11-9,每次都这样计算,相减后作为一列值。
SQL语句写法?
xianggelia 2012-03-19
  • 打赏
  • 举报
回复
也就是time2的时间减去time1的下一个时间
xpingping 2012-03-19
  • 打赏
  • 举报
回复
Date类型……
time2-time1
varchar
to_date(time2,'YYYY-MM-DD hh24:mi:ss')-to_date(time1,'YYYY-MM-DD hh24:mi:ss')
得到的结果的单位是天……
xianggelia 2012-03-19
  • 打赏
  • 举报
回复
错位相减:time2的时间减去time1的时间,比如“ 2012-03-19 10:10:01
” - “2012-03-19 10:06:01 ”
用SQL语句怎样写?
xpingping 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 xianggelia 的回复:]
3、time1 desc 排序后,ID与A的内容不一定是按照顺序下来的,但一定是从大到小排下来的。
比较啰嗦
[/Quote]
不解……
yixilan 2012-03-19
  • 打赏
  • 举报
回复
然后呢?楼主,1楼给的数据,你想达到什么样的效果?或者哪里有问题呢?
xianggelia 2012-03-19
  • 打赏
  • 举报
回复

xianggelia 2012-03-19
  • 打赏
  • 举报
回复
图片没有显示,那我就举个例子:
ID A Time1 Time2
12 D203456700 2012-03-19 10:08:01 2012-03-19 10:10:01
11 D203456600 2012-03-19 10:06:01 2012-03-19 10:08:01
9 D203456500 2012-03-19 10:04:01 2012-03-19 10:06:01
8 D203456300 2012-03-19 10:02:01 2012-03-19 10:04:01
xianggelia 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yixilan 的回复:]
引用 8 楼 xianggelia 的回复:
引用 6 楼 xpingping 的回复:
你误解了我的意思,
比如:
ID A time1 time2
3 D202345600……
把test_yixl换成你自己的表名:

SQL code

select b.time2 begintime, a.time1 endtime, (b.time2 - a.time1)*24*60……
[/Quote]

多谢!

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧