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')
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值