Maison  >  Article  >  base de données  >  Oracle时间比较,计算 得到月,日,年

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

WBOY
WBOYoriginal
2016-06-07 15:44:471737parcourir

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值

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:SQLServer Replication 常见错误Article suivant:Oracle存储过程实例