oracle 计算timestamp时间差?搞了一下午了!!!

junlong3636 2014-01-13 06:24:27
send_time recieve_time
2014-01-13 15:40:01.761000 2014-01-13 15:40:17.576000
2014-01-13 15:40:17.795000 2014-01-13 15:40:31.774000

求recieve_time-send_time的时间差,精确到毫秒。
比如第一行17576 - 1761 = 15815 毫秒

写sql 哦,谢谢了
...全文
3948 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿三 2014-01-14
  • 打赏
  • 举报
回复
SELECT (TO_DATE(date2,'yyyy-mm-dd hh24:mi:ss')-TO_DATE(date1,'yyyy-mm-dd hh24:mi:ss'))*86400000- (TO_NUMBER(m1)-TO_NUMBER(m2)) FROM ( select substr(to_char(to_timestamp('2014-01-13 15:40:11.761000','yyyy-mm-dd hh24:mi:ss.ff6'),'yyyy-mm-dd hh24:mi:ss.ff6'),0,19) date1, substr(to_char(to_timestamp('2014-01-13 15:40:11.761000','yyyy-mm-dd hh24:mi:ss.ff6'),'yyyy-mm-dd hh24:mi:ss.ff6'),21,3) m1, substr(to_char(to_timestamp('2014-01-13 15:40:17.576000','yyyy-mm-dd hh24:mi:ss.ff6'),'yyyy-mm-dd hh24:mi:ss.ff6'),0,19) date2, substr(to_char(to_timestamp('2014-01-13 15:40:17.576000','yyyy-mm-dd hh24:mi:ss.ff6'),'yyyy-mm-dd hh24:mi:ss.ff6'),21,3) m2 from dual ) 不知这样行不行,先计算日期间的毫秒数,然后减去小数的毫秒差。
  • 打赏
  • 举报
回复

select (to_date(substr(lEndTime, 1, 19), 'yyyy-mm-dd hh24:mi:ss') -
       to_date(substr(lBeginTime, 1, 19), 'yyyy-mm-dd hh24:mi:ss')) * 24 * 3600 * 1000 +
       to_number(substr(lEndTime, 21, 3)) -
       to_number(substr(lBeginTime, 21, 3))
  from dual
--截取前面的日期相减,后面毫秒数相减。
junlong3636 2014-01-13
  • 打赏
  • 举报
回复
引用 2 楼 zhaoxiangchong 的回复:
你的时间的格式是什么?如果是data类型,可以直接的相减。如果是时间戳的话,需要先转换为data类型。
你好,是时间戳的,网上找了很久,转换成date的话,感觉后面的毫秒数被四舍五入了
善若止水 2014-01-13
  • 打赏
  • 举报
回复
你的时间的格式是什么?如果是data类型,可以直接的相减。如果是时间戳的话,需要先转换为data类型。
Wentasy 2014-01-13
  • 打赏
  • 举报
回复
你看下格式化时间的几个参数,可以精确到毫秒的。

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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