Oracle 时间加减法由于最近在做时段加减法相关的测试工作,在网上找到了一些关于时间加减方面的算法,正好可以解决燃眉之急,也希望能够帮到更多的Oracle初学者!加法
select sysdate,add_months(sysdate,12) from dual; --加1年
select sysdate,add_months(sysdate,1) from dual; --加1月
select sysdate,to_char(sysdate+7,"yyyy-mm-dd HH24:MI:SS") from dual; --加1星期
select sysdate,to_char(sysdate+1,"yyyy-mm-dd HH24:MI:SS") from dual; --加1天
select sysdate,to_char(sysdate+1/24,"yyyy-mm-dd HH24:MI:SS") from dual; --加1小时
select sysdate,to_char(sysdate+1/24/60,"yyyy-mm-dd HH24:MI:SS") from dual; --加1分钟
select sysdate,to_char(sysdate+1/24/60/60,"yyyy-mm-dd HH24:MI:SS") from dual; --加1秒
减法
select sysdate,add_months(sysdate,-12) from dual; --减1年
select sysdate,add_months(sysdate,-1) from dual; --减1月
select sysdate,to_char(sysdate-7,"yyyy-mm-dd HH24:MI:SS") from dual; --减1星期
select sysdate,to_char(sysdate-1,"yyyy-mm-dd HH24:MI:SS") from dual; --减1天
select sysdate,to_char(sysdate-1/24,"yyyy-mm-dd HH24:MI:SS") from dual; --减1小时
select sysdate,to_char(sysdate-1/24/60,"yyyy-mm-dd HH24:MI:SS") from dual; --减1分钟 select sysdate,to_char(sysdate-1/24/60/60,"yyyy-mm-dd HH24:MI:SS") from dual; --减1秒
按时间段统计:注意,要根据Oracle中实际的类型而对sql语句做相应的改变:代码来源:select to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30)*30/60/24),"hh24:mi")||"-"||to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30+1)*30/60/24),"hh24:mi") period, avg(v1),sum(v2),count(*) "ROWS" from test where trunc(dtime)=to_date(&day,"yyyymmdd") group by to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30)*30/60/24),"hh24:mi")||"-"||to_char((trunc(sysdate)+trunc((dtime-trunc(sysdate))*24*60/30+1)*30/60/24),"hh24:mi") order by 1; 我的修改:
select to_char((trunc(sysdate) +
trunc((to_date(to_char(passvehicleinfo.passtime,
"yyyymmdd hh24:mi:ss"),
"yyyymmdd hh24:mi:ss") - trunc(sysdate)) * 24 * 60 / 30) * 30 / 60 / 24),
"hh24:mi") || "-" || to_char((trunc(sysdate) + trunc((to_date(to_char(passvehicleinfo.passtime, "yyyymmdd hh24:mi:ss"), "yyyymmdd hh24:mi:ss") - trunc(sysdate)) * 24 * 60 / 30 + 1) * 30 / 60 / 24), "hh24:mi")
from passvehicleinfo
group by to_char((trunc(sysdate) +
trunc((to_date(to_char(passvehicleinfo.passtime,
"yyyymmdd hh24:mi:ss"),
"yyyymmdd hh24:mi:ss") - trunc(sysdate)) * 24 * 60 / 30) * 30 / 60 / 24),
"hh24:mi") || "-" || to_char((trunc(sysdate) + trunc((to_date(to_char(passvehicleinfo.passtime, "yyyymmdd hh24:mi:ss"), "yyyymmdd hh24:mi:ss") - trunc(sysdate)) * 24 * 60 / 30 + 1) * 30 / 60 / 24), "hh24:mi")
更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12MySQL Workbench “Error Code: 1175” 的解决方法诊断Oracle Redo Log性能问题相关资讯 Oracle数据库入门教程
- 从Oracle817导入到Oracle10.2.0.4 (10/06/2012 10:51:17)
- Oracle出现“TNS: 监听程序无法分 (10/05/2012 11:50:50)
- Oracle中强行断开用户连接的方法 (10/04/2012 21:01:35)
| - Oracle入门教程之数据库实例管理 (10/05/2012 11:53:50)
- ORA-12519: TNS:no appropriate (10/05/2012 11:43:50)
- Oracle 数据库入门教程 PPT (06/09/2012 14:38:16)
|
本文评论 查看全部评论 (0)