>  기사  >  데이터 베이스  >  Oracle时间比较,计算 得到月,日,年

Oracle时间比较,计算 得到月,日,年

WBOY
WBOY원래의
2016-06-07 15:44:471733검색

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值

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.