oracle-函数-trunc-round-日期函数 博客分类: DB-Oracle oracletruncround日期四舍五入
select trunc(sysdate) from dual; --默认截取到天
2017-09-12 00:00:00
select trunc(sysdate,'dd') from dual;--截取到天
2017-09-12 00:00:00
select trunc(sysdate,'') from dual;
空
select trunc(sysdate,'year') from dual; --截取到年(本年的第一天)
select trunc(sysdate,'q') from dual; --截取到季度(本季度的第一天)
select trunc(sysdate,'month') from dual; --截取到月(本月的第一天)
select trunc(sysdate,'w') from dual; -- 离当前时间最近的周四,若当天为周四则返回当天,否则返回上周四????
select trunc(sysdate,'ww') from dual; --截取到上周末(上周周六)????
select trunc(sysdate,'day') from dual; --截取到周(本周第一天,即上周日)
select trunc(sysdate,'iw') from dual; --本周第2天,即本周一
select trunc(sysdate,'hh24') from dual; --截取到小时(当前小时,零分零秒)
2011-12-29 16:00:00
select trunc(sysdate,'mi') from dual; --截取到分(当前分,零秒)
2011-12-29 16:24:00
select trunc(sysdate,'ss') from dual ;--报错,没有精确到秒的格式
二、oracle trunc函数处理数值
trunc(x[,y])
【功能】返回x按精度y截取后的值
【参数】x,y,数字型表达式,如果y不为整数则截取y整数部分,如果y>0则截取到y位小数,如果y小于0则截取到小数点向左第y位,小数前其它数据用0表示。 如果y小于0,且y的绝对值大于或等于x整数的位数,则返回为0。如:TRUNC(89.985,-3)=0。
【返回】数字
【示例】
selecttrunc(5555.66666,2.7),trunc(5555.66666,-2.6),trunc(5555.733333) fromdual;
返回:5555.66 5500 5555
selectTRUNC(89.985,-3) fromdual; --0
select TRUNC(89.985,-2) from dual; --0
三、oracle round函数处理数值
round(x[,y])
【功能】返回四舍五入后的值
【参数】x,y,数字型表达式;y的默认值为0;如果y不为整数则截取y整数部分,如果y>0则四舍五入为y位小数,如果y小于0则四舍五入到小数点向左第y位。
【返回】数字
【示例】 select round(1.6),round(1.6,0),round(5555.6666,2.1),round(5555.6666,-2.6),round(5555.6666) from dual;
返回: 2 , 2 , 5555.67 , 5600 , 5556
【相近】trunc(x[,y]) 返回截取后的值,用法同round(x[,y]),只是不四舍五入
四、oracle round函数处理日期
ROUND(d[,fmt])
ROUND(d[,fmt])
ROUND(d[,fmt])
【功能】返回一个以fmt为格式的四舍五入日期值
【参数】d是日期,fmt是格式 模型。默认fmt为DDD,即月中的某一天。
如果fmt为“YEAR”则舍入到某年的1月1日,即前半年舍去,后半年作为下 一年
如果fmt为“MONTH”则舍入到某月的1日,即前月舍去,后半月作为下一 月
默认为“DDD”,即月中的某一天,最靠近的天,前半天舍去,后半天作为第二天
如果fmt为“DAY”则舍入到最近的周的周日,即上半周舍去,下半周作为下 一周周日
【返回】日期
【示例】 select sysdate,round(sysdate),round(sysdate,'ddd'),
round(sysdate,'day'),round(sysdate,'month'),round(sysdate,'year') from dual;
返回: 2017-09-13 16:11:13 , 2017-09-14 00:00:00 , 2017-09-14 00:00:00 ,
2017-09-17 00:00:00 , 2017-09-01 00:00:00 , 2018-01-01 00:00:00
五、oracle 日期函数:ADD_MONTHS、LAST_DAY、EXTRACT
1. ADD_MONTHS(d,n),在某一个日期d上,加上指定的月数n,返回计算后的新日期
【示例】 select sysdate,add_months(sysdate,5) fromdual;
返回: 2017-09-13 16:35:19 , 2018-02-13 16:35:19
2. LAST_DAY(d),返回指定日期当月的最后一天
【示例】 select sysdate,LAST_DAY(sysdate) fromdual;
返回: 2017-09-13 16:35:19 , 2017-09-30 16:35:19
4. EXTRACT(fmt FROM d),提取日期中的特定部分。
【参数】fmt为:YEAR、MONTH、DAY、HOUR、MINUTE、SECOND。
其中YEAR、MONTH、DAY可以为DATE类型匹配,也可以与TIMESTAMP类型匹配;
但是HOUR、MINUTE、SECOND必须与TIMESTAMP类型匹配。
HOUR匹配的结果中没有加上时区,因此在中国运行的结果小8小时。
【返回】数字
【示例】
select sysdate,systimestamp,
extract(yearfrom sysdate),extract(monthfrom sysdate),extract(dayfrom sysdate),
extract(hour from systimestamp),extract(minute from systimestamp),extract(second from systimestamp)
fromdual;
返回: 2017-09-13 16:52:58 , 2017-09-13 17:05:25 GMT+08:00 ,
2017 , 9 , 13 , 8 , 52 , 58.75