oracle学习总结(1)

来源:互联网 发布:血滴子 淘宝 编辑:程序博客网 时间:2024/04/29 22:30

进入新的项目组,一直在做数据库开发测试这块的东东。下面就是分享一下我自己工作中遇到的一些问题吧。没有什么系统性,写的比较散,不喜勿喷啊!!

1.数字格式的一些问题

我在工作过程中遇到了各种各样的数据要求格式问题

1)小数末尾‘0’不展示。

我使用的是rtrim函数

select rtrim(to_char(0.45550000,'0.9999999999'),'o') from dual;

2)对于0.XXX的小数不展示小数点前的‘0’

select to_char(0.25360,'.99999') from dual;

ps:如果此时既不想展示前面的0也不想展示后面的0那么

select rtrim(0.25360,'0') from dual;

但这时会出现一种情况如果查询的是0,经过处理后就变成null了

3)科学计数法的使用

select  to_char(0.555555555555,9.999EEEE) from dual;

EEEE前面的9个数不一样,显示的结果也不一样哦,自己试试啊。

4)显示为百分数形式

select  to_char(round(0.3253665,4) *100,'990.99')||'%' from dual;

2.时间的一些计算问题

求一个月所在的季度问题,以及数据的查询时间的起始和终止时间,即 查询粒度问题

季度

开始时间

select substr($begintime, 1, 4) ||
        lpad(ceil(to_number(substr($begintime, 5, 2) ) / 3 - 1) * 3 + 1,
             2,
             0) 
   from dual

自己在使用的时候注意先试试看,有可能会需要涉及一些时间转换的问题。


终止时间()

select to_char(add_months(to_date(substr($endtime, 1, 4) ||
                                  lpad(ceil(to_number(substr($endtime,
                                                             5,
                                                             2)) / 3) * 3,
                                       2,
                                       0),
                           'yyyymm'),1),
                   'yyyymmdd')
      from dual

--查询出的结果应该是下一个季度的第一天,这个语句应该是有错误的,主要是函数的转换这块。

 

时间的加减问题

 

天数的加减

直接在时间后面直接 “+ number” 就可以了

 

小时的加减

在时间后面 “+number/24”

分钟

+number/60/24

月加减  直接函数搞定

ADD_minths

 

原创粉丝点击