oracle trunc()函数的用法

来源:互联网 发布:剑三成男二少捏脸数据 编辑:程序博客网 时间:2024/04/29 11:34

TRUNC()函数分两种

1.TRUNC(fordates)
TRUNC函数为指定元素而截去的日期值。
其具体的语法格式如下:
TRUNC(date[,fmt])
其中:
date 一个日期值
fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去


下面是该函数的使用情况:
TRUNC(TO_DATE(’24-Nov-199908:00 pm’,’dd-mon-yyyy hh:mi am’))=’24-Nov-1999 12:00:00 am’
TRUNC(TO_DATE(’24-Nov-199908:37 pm’,’dd-mon-yyyy hh:mi am’,’hh’)) =’24-Nov-1999 08:00:00 am’

2.TRUNC(fornumber)
TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
其具体的语法格式如下:
TRUNC(number[,decimals])
其中:
number 待做截取处理的数值
decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分


下面是该函数的使用情况:
TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80
注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。

问:我有一个表,其中包含两个日期"vis_dt1"和"vis_dt2"。我想要找到落在某个范围之外的所有的"vis_dt2dates",例如"vis_dt1"之后的144-260天,但是包括了"vis_dt1"在内。我知道Oracle给我之间的天数,但是我如何才能调整为第一天?有没有通用的方法可以这样的运行日期?

答:我认为你的where子句中应制定如下的条件来表达你的需求:
  TRUNC(vis_dt2)NOTBETWEEN trunc(visdt1+144) and trunc(visdt1+260)
  ANDtrunc(vis_dt2) >= trunc(vis_dt1)

 

用什么函数取2个日期之间的天数

select trunc(to_date('20040102','yyyymmdd') - to_date('200312','yyyymm')) fromdual;
结果:32
select trunc(to_date('200401','yyyymm') - to_date('200312','yyyymm')) fromdual;
结果:31
select trunc(to_date('2004','yyyy') - to_date('2003','yyyy')) from dual;
结果:365

原创粉丝点击