Oracle round和trunc函数

Oracle函数大全三十七:ROUND函数 需要注意的是,ROUND函数不仅可以处理数值类型的列或变量,也可以处理可以被Oracle转换为数字的字符串类型的数据。但是,如果传递给ROUND函数的参数无法转换为数字,则会引发错误。OracleROUND函数是一个内置的数学函数,用于对数字进行四舍五入计算。它可以根据指定的精度对单个数字或一组数字进行处理。ROUND函数在数据处理、财务计算、科学计算等领域中非常有用,因为它可以帮助用户按照指定的精度对数字进行格式化或调整。(向上取整),而第二个查询将返回。 阅读详情

一、Oracle中的Round和Trunc:

如同对数字进行四舍五入和按位截取一样,Oracle对时间日期也提供了这两种功能。但比起对数字进行四舍五入和截取比较复杂:这是因为时间日期是有格式的。下面看看这两个函数的定义和用途:

ROUND(date [, format])

TRUNC(date [, format])

Round函数对日期进行“四舍五入”,Trunc函数对日期进行截取。如果我们不指定格式的话,Round会返回一个最接近date参数的日期,而Trunc函数只会简单的截取时分秒部分,返回年月日部分。

二、Round和Trunc函数示例:

 SQL >   select  to_char(sysdate,  ' yyyy-mm-dd hh24:mi:ss ' ) now_date,
    2              to_char( Round (sysdate), ' yyyy-mm-dd hh24:mi:ss ' 
) round_date,
    3              to_char(Trunc(sysdate), ' yyyy-mm-dd hh24:mi:ss ' 
) trunc_date
    4      from 
 dual;
 
 NOW_DATE                               ROUND_DATE                             TRUNC_DATE
 -- ------------------------------------ -------------------------------------- ---------------------- 

 2008 - 06 - 30   14 : 52 : 13                      2008 - 07 - 01   00 : 00 : 00                      2008 - 06 - 30   00 : 00 : 00 


这是一个典型的例子,由于我们没有指定round和trunc函数的格式,所以Oracle默认采用了按日期时间的格式,该例子中当前的时间是下午 14:52分,已经超过了12:00 AM这个中界线,所以Round返回07-01日而非06-30日。而Trunc不管三七二十一直接截取前面日期部分返回。

另外一个值得注意的地方是这两个函数返回的时分秒都是00:00:00,即一天的开始时间(对于12小时制的返回的是12:00:00 AM)。

三、指定格式的Round和Trunc函数示例:

如果我们对Round函数和Trunc函数指定了格式,事情就变得有点复杂了,不过核心思想还是不变:Round是四舍五入,Trunc是截取。举个例子来说,假如我们以年为格式,则现在Oracle的判断是基于年来判断,超过一年的一半(即6月30日),Round函数则返回下一年了,Trunc函数依然返回当前年。

 SQL >   select  sysdate "Now date",
    2              Round (sysdate,  ' yyyy ' 
) Round_year,
    3              Trunc(sysdate,  ' yyyy ' 
) Trunc_year
    4      from 
 dual;
 
 Now date   ROUND_YEAR TRUNC_YEAR
 -- -------- ---------- ---------- 

 30 - 6月  - 08   01 - 1月  - 08   01 - 1月  - 08


关于这两个函数可用的格式非常多,但日常应用中用得比较多的基本上就这几个,以Round函数为例:

 select   Round (sysdate,  ' Q ' ) Rnd_Q,
          Round (sysdate,  ' Month ' 
) Rnd_Month,
          Round (sysdate,  ' WW ' 
) Rnd_Week,
          Round (sysdate,  ' W ' 
) Rnd_Week_again,
          Round (sysdate,  ' DDD ' 
) Rnd_day,
          Round (sysdate,  ' DD ' 
) Rnd_day_again,
          Round (sysdate,  ' DAY ' 
) Rnd_day_of_week,
          Round (sysdate,  ' D ' 
) Rnd_day_of_week_again,
          Round (sysdate,  ' HH12 ' 
) Rnd_hour_12,
          Round (sysdate,  ' HH24 ' 
) Rnd_hour_24,
          Round (sysdate,  ' MI ' 
) Rnd_minute
    from  dual

 

 

四、用trunc函数处理日期

 日期用例 '2008-11-28 12:59:59'周五  

1.没有fmt部分时

   语句: SELECT   TRUNC(TO_DATE('2008-11-28 12:00:01','YYYY-MM-DD hh24:mi:ss')) FROM   DUAL;
          结果: 2008-11-28  

        

2.得到最当前日期之前的最近的一个周日的日期

   语句: SELECT   TRUNC(TO_DATE('2008-11-28 12:59:59','YYYY-MM-DD hh24:mi:ss'),'D') FROM   DUAL;   
   结果: 2008-11-23 周日

   语句: SELECT   TRUNC(TO_DATE('2008-11-28 12:59:59','YYYY-MM-DD hh24:mi:ss'),'D')+1 FROM   DUAL;   
   结果: 2008-11-24 周一

 

3.得到最当前日期的所在月份的第一天

   语句: SELECT   TRUNC(TO_DATE('2008-11-28 12:59:59','YYYY-MM-DD hh24:mi:ss'),'MM') FROM   DUAL;   
   结果: 2008-11-1

   语句: SELECT   TRUNC(TO_DATE('2008-11-28 12:59:59','YYYY-MM-DD hh24:mi:ss'),'MM')-1 FROM   DUAL; 

   结果: 2008-10-31

 

4.得到最当前日期的所在年份的第一天

   语句: SELECT   TRUNC(TO_DATE('2008-11-28 12:59:59','YYYY-MM-DD hh24:mi:ss'),'Y') FROM   DUAL;   
   结果: 2008-1-1

   语句: SELECT   TRUNC(TO_DATE('2008-11-28 12:59:59','YYYY-MM-DD hh24:mi:ss'),'Y')-1 FROM   DUAL; 

   结果: 2007-12-31

转自:http://hepu.iteye.com/blog/340378

oracle rac 成本及架构,Oracle Extended RAC 架构实战 Extended-RAC,是RAC技术的一种扩展增强。Extended-RAC是通过专用光纤(或租用裸光纤)加DWDM(波分设备)设备将两个不同楼栋/同城甚至异地机房进行相连,将数据库主机、存储分别放置于不同机房,利用存储复制/ASM Mirror等技术进行数据复制进行搭建的一种远距离集群架构。Extended RAC需要将不同楼栋/同城甚至异地机房通过专用光纤(或租用裸光纤)加DWDM(光纤复用... 阅读详情

相关推荐

Halcon实战:5分钟搞定灰度图转热力图(附完整代码)

本文提供了一份Halcon实战指南,详细讲解如何在5分钟内将灰度图转换为直观的热力图。通过核心代码演示了利用HSV颜色模型进行色彩映射的原理与步骤,包括图像归一化、通道构建与空间转换,并附赠了深度图可视化等进阶应用技巧,帮助工程师快速提升图像分析效果。

weixin_29240343的博客 257

Oracle中的RoundTrunc

一、Oracle中的RoundTrunc:如同对数字进行四舍五入按位截取一样,Oracle对时间日期也提供了这两种功能。但比起对数字进行四舍五入截取比较复杂:这是因为时间日期是有格式的。下面看看这两个函数的定义用途:ROUND(date [, format])TRUNC(date [, format])Round函数对日期进行“四舍五入”,Trunc函数对日期进行截取。如果我们不指定格式的...

hepu 324

OracleROUND函数TRUNC函数的比较

Oracle数据库中,有两个常用的数值函数,即ROUND函数TRUNC函数,用于对数值进行舍入截断操作。在本文中,我们将比较介绍这两个函数的用法区别,并提供相应的源代码示例。其中,number是要进行舍入操作的数值,precision是指定的精度,表示要保留的小数位数。其中,number是要进行截断操作的数值,precision是指定的精度,表示要保留的小数位数。需要注意的是,以上示例中的dual是Oracle中的虚拟表,用于在没有实际表的情况下执行一些简单的查询操作。

ZaxfSass的博客 712

oracle中的round2,Oracleroundtrunc函数的区别是什么?

1、关于trunc round函数比较整体概括:round函数 四舍五入trunc函数 直接截取对于时间:Round函数对日期进行“四舍五入”,Trunc函数对日期进行截取。如果我们不指定格式的话,Round会返回一个最接近date参数的日期,而Trunc函数只会简单的截取时分秒部分,返回年月日部分对于数字:Round函数对数字同样进行“四舍五入”,Trunc函数截取时不进行四舍五入,可以指明保...

weixin_36254822的博客 730

oracle函数round()与函数trunc()

一.首次讨论一下这两个函数里面参数的意思{ round(x[,y]) 与trunc(x[,y])}: 1. round(x[,y]):x与y都是数字型表达式,如果y是小数,则取其整数部分。当y>0的时候,表示x从小数点后开始数y位四舍五入;如果y 2.trunc(x[,y]):x与y都是数字表达式,如果y是小数,则取其整数部分。当y>0时,则从小数部分开始截取y个数;如果y 二. 下面举些例

SmallyYellowPiggy的博客 624

Oracle中的RoundTrunc函数区别

一、Oracle中的RoundTrunc: 如同对数字进行四舍五入按位截取一样,Oracle对时间日期也提供了这两种功能。但比起对数字进行四舍五入截取比较复杂:这是因为时间日期是有格式的。下面看看这两个函数的定义用途: ROUND(date [, format]) TRUNC(date [, format]) round四舍五入算法 round(带小时分秒日期

piaoxuan1987 4373

Oracletrunc函数round 函数、ceil函数floor函数的使用

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

醉爱梁静茹 2万+

Oracletrunc函数round 函数、ceil函数floor函数

--Oracle trunc()函数的用法 1.1trunc函数处理日期 trunc函数返回以指定元元素格式截去一部分的日期值。 其具体的语法格式如下: TRUNC(date,[fmt]) 其中: date为必要参数,是输入的一个日期值 fmt参数可忽略,是日期格式,用以指定的元素格式来截去输入的日期值。忽略它则由最近的日期截去 /*********

巴黎左岸 · 荼靡花开 727

Oracle的取整四舍五入函数——floor,round,ceil,trunc使用说明

看了electrictoolbox上对PHP,MYSQL,Javascript几种语言关于取整数的专题,也就依样画葫芦整理了Oracle的取整函数说明,这就是本文的由来。 FLOOR——对给定的数字取整数位 SQL> select floor(2345.67) from dual; FLOOR(2345.67) -------------- 2345 CEIL-- 返回大于

heqiyu34的专栏 1万+

Oracle基础梳理之ROUNDTRUNC函数-No2

ROUNDTRUNC函数 trunc用于直接截取数字或日期,round则是四舍五入 直接举例子说明: ——TRUNC()函数截取数字时不进行四舍五入 1、select trunc(123.458) from dual --123 2、select trunc(123.458,0) from dual --123 3、select trunc(123.458,1) from dual --123.4 4、select trunc(123.458,-1) from dual --120 5、select tr

weixin_35343143的博客 602

oracle 数据库ceil,[数据库]Oracletrunc函数round 函数、ceil函数floor函数的使用...

[数据库]Oracletrunc函数round 函数、ceil函数floor函数的使用02016-08-20 10:00:111.1trunc函数处理数字trunc函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。其具体的语法格式如下TRUNC(number[,decimals])其中:number 待做截取处理的数值...

weixin_36158990的博客 330

Oracle trunc round 函数对 date 字段的截取

Oracle trunc round 函数对 date 字段的截取

VincentQB的博客 1353

Oracletruncround 、ceilfloor函数的区别?

1、trunc函数 处理数值,对给定数值进行截取处理,不会对给定数值做四舍五入处理。 语法格式: TRUNC(number[,decimals])--number 待处理的数据,decimals指明需保留小数点后的位数,默认为0 如果参数为负数,则小数点往前取位数,如果负数位数大于或等于待处理数据位数,则返回0. selecttrunc(123.456)from dual;--123 ...

小小刚CSDN 5532

Oracletrunc函数round_函数、ceil函数floor函数的使用

Oracletrunc函数round 函数、ceil函数floor函数的使用1.1trunc函数处理数字trunc函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。其具体的语法格式如下TRUNC(number[,decimals])其中:number 待做截取处理的数值decimals 指明需保留小数点后面的位数。可选...

winingblog 454

Oracletruncround 、ceilfloor函数的区别

1、trunc函数 处理数值,对给定数值进行截取处理,不会对给定数值做四舍五入处理。 语法格式: TRUNC(number[,decimals])--number 待处理的数据,decimals指明需保留小数点后的位数,默认为0 如果参数为负数,则小数点往前取位数,如果负数位数大于或等于待处理数据位数,则返回0. selecttrunc(123.456)from dual;--1

yLazL0000的博客 2210

FANUC示教手册

对于FANUC机器人初学者来说是必不可少的手册!

上一篇: oracle lag与lead分析函数简介
下一篇: Merge into 使用详解
wdyr321
博客等级 码龄15年 3粉丝 13原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值