oracle相关时间计算,得到季度第一天、最后一天
?
?
?
?
Oracle里的两个日期类型的数据相减得到的天数
??相差天数
??SQL>???select to_date('2010-03-02','yyyy-mm-dd')-to_date('2010-02-10','yyyy-mm-dd') from A?
??--------20----------结果为2月10日到3月2日的天数
??SQL>???select trunc(to_date('2010-03-02','yyyy-mm-dd'),'mm')- trunc(to_date('2010-02-10','yyyy-mm-dd'),'mm') from A
??--------28----------结果为2月到3月的天数(上sql精确到了月份)
??SQL>???select trunc(to_date('2010-03-02','yyyy-mm-dd'),'yy')- trunc(to_date('2010-02-10','yyyy-mm-dd'),'yy') from A
??--------0-----------结果是按年计算
?相差月数??
??SQL>???select months_between(trunc(to_date('2010-03-02','yyyy-mm-dd'),'mm') , trunc(to_date('2010-02-10','yyyy-mm-dd'),'mm')) from A
??---------1----------结果为月份差(是前日期与后日期差,反过来为-1)
??SQL>???select months_between(to_date('2010-03-01','yyyy-mm-dd') , to_date('2010-02-01','yyyy-mm-dd'))??from A
??---------1----------日相同时计算精确
??SQL>???select months_between(to_date('2010-03-02','yyyy-mm-dd') , to_date('2010-02-01','yyyy-mm-dd')) from A
??--------1.03225806451613------日相差1或N天,--是如何计算的???
???
??相差年
??SQL>????select trunc(months_between(to_date('2010-03-01','yyyy-mm-dd') , to_date('2009-03-01','yyyy-mm-dd'))/12) from A
??---------1----------结果为年份差(是前日期与后日期差,反过来为-1)
??SQL>????select months_between(to_date('2010-03-01','yyyy-mm-dd') , to_date('2009-03-01','yyyy-mm-dd'))/12 from A
??---------1----------结果为年份差(是前日期与后日期差,反过来为-1)
??SQL>???select trunc( months_between(to_date('2010-05-01','yyyy-mm-dd') , to_date('2009-03-01','yyyy-mm-dd'))/12) from A
??---------1----------结果为年份差(是前日期与后日期差,反过来为-1)
??SQL>???select months_between(to_date('2010-05-01','yyyy-mm-dd') , to_date('2009-03-01','yyyy-mm-dd'))/12 dd from es_accu_card_private
??---------1.16666666666667----------
??Oracle Trunc函数
??SQL>????select trunc(5.75,-2),trunc(5.75,-1),trunc(5.75), trunc(5.75,0),trunc(5.75,1), trunc(5.75,2),trunc(5.75,3) from A
??---------0---0---5---5---5.7---5.75---5.75------
??trunc(x,y),其中如果没有指定y,则对x在0位小数进行截断
??trunc(x,y),y为负数,则对x在小数点左边的第|y|位处进行截断,将5.57看成05.57,所以得到0值