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

WBOY
リリース: 2016-06-07 15:44:47
オリジナル
1743 人が閲覧しました

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值

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート