`

Oracle开发专题之:时间运算2(日期截取及四舍五入) (转载)

 
阅读更多

一、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


转载自:http://www.blogjava.net/pengpenglin/archive/2008/06/30/211657.html

 

分享到:
评论

相关推荐

    Oracle数据库开发之函数概述

    四舍五入函数ROUND(n[,m])允许我们根据指定的小数位数对数值进行四舍五入。其中,n是要四舍五入的数值,m则是保留的小数位数。如果m为正数,则保留小数点后m位;如果m为负数,则保留小数点前m位;若省略m,则默认为0...

    鸿鹄论坛_oracle四大宝典之1:Oracle Sql基础.

    3. **数字函数**:`ROUND`用于四舍五入;`MOD`用于求余数。 4. **日期函数**:`SYSDATE`返回当前系统日期;`ADD_MONTHS`用于计算几个月后的日期。 ##### 3.10 转换函数 1. **隐式数据类型转换**:当数据类型不一致...

    ORACLE常用日期函数集合

    ### ORACLE常用日期函数...以上介绍的Oracle日期函数是数据库开发和管理中非常实用的一部分,通过灵活地运用这些函数,可以有效地解决各种与日期相关的数据处理问题。希望本文能够帮助读者更好地掌握和应用这些函数。

    oracle 表达式

    - 数学函数:如SQRT()开平方,MOD()求模,ROUND()四舍五入等。 4. CASE表达式: CASE语句允许基于条件执行不同的计算或返回不同的值,分为简单CASE和搜索CASE两种形式。 5. 分组和聚合: GROUP BY语句用于将...

    oracle内部日期查询.pdf

    `ADD_MONTHS`函数用于给日期增加指定的月数,`LAST_DAY`得到一个月的最后一天,`MONTHS_BETWEEN`计算两个日期之间的月数差,`NEW_TIME`转换时区,`NEXT_DAY`找到下一个特定的星期几,`ROUND`四舍五入日期时间,...

    PL/SQL 日期时间类型函数及运算

    * ROUND:四舍五入得到新的日期。 * SESSIONTIMEZONE:返回当前会话的时区。 * SYS_EXTRACT_UTC:从提供的datetime中以UTC返回时间。 * SYSTIMESTAMP:返回当前的日期和时间。 * TRUNC:截取日期。 * TZ_OFFSET:...

    oracle数据库的功能

    - `ROUND`:四舍五入。 - `TRUNC`:截断小数位。 - `MOD`:取模运算。 #### 三、数据库原理与结构 1. **文件存储**:早期数据管理方式之一,存在诸多局限性,如难以维护和扩展。 2. **数据库** (DB):按照数据...

    sql server 和oracle函数

    - **SQL Server**: 使用 `ROUND` 函数来四舍五入数值到指定的小数位数。 - 示例:`SELECT ROUND(1.23456, 4) AS Value;` - **Oracle**: 同样使用 `ROUND` 函数。 - 示例:`SELECT ROUND(1.23456, 4) AS Value FROM...

    oracle内部日期查询.docx

    `NEW_TIME`转换时区,`NEXT_DAY`找到下一个指定的工作日,`ROUND`对日期/时间值四舍五入,`SYSDATE`获取当前日期和时间,`TO_CHAR`和`TO_DATE`用于日期和字符串之间的转换,以及`TRUNC`用于截取日期/时间到指定元素...

    ORACLE常用函数功能演示

    - **日期舍入和截取**:ROUND和TRUNC函数可以按照指定的日期格式对日期进行四舍五入或截取。 **4. 类型转换函数** 类型转换函数用于在数值和字符之间转换数据类型,例如将数值转换成字符串或反之。 **总结** ...

    oracle时间time转换器

    Oracle数据库系统是世界上最广泛使用的数据库管理系统之一,尤其在企业级应用中占据主导地位。在处理时间数据时,Oracle提供了一系列的内置函数和类型,使得时间的转换和操作变得方便高效。"Oracle时间time转换器"是...

    Oracle常用单行函数

    1. `round(n,[m])`:四舍五入,m为可选参数,用于指定保留的小数位数。 2. `trunc(n,[m])`:截取数字,m同样可选,用于决定截取到小数点的哪一位。 3. `mod(m,n)`:返回m除以n的余数。 4. `floor(n)`:返回小于或...

    Oracle常用函数.pdf

    日期函数用于处理日期时间数据,支持多种日期格式的转换及计算。 - **MONTHS_BETWEEN**: 计算两个日期之间的月份差。 - 示例:`MONTHS_BETWEEN('04-11月-05','11-1月-01')` 返回 `57.7741935` - **ADD_MONTHS**: ...

    Oracle与Sql-Server函数对照.docx

    - 作用:根据指定精度对日期进行四舍五入。 #### 四、数学函数对照 1. **平均值** - **Oracle** & **SQL Server**: `AVG` - 作用:计算数值列的平均值。 2. **计数** - **Oracle** & **SQL Server**: `COUNT`...

    oracle教学4笔记

    - `TRUNC`:截取,不会进行四舍五入 - `MOD`:取余数 4. **转换函数:** - `TO_DATE`:将字符型数据转换为日期类型 - `TO_CHAR`:将数字或日期类型转换为字符类型 - `TO_NUMBER`:将字符转换为数值类型 5. **...

    Oracle SQL语法速查

    4. **数学函数**:ROUND()四舍五入,CEIL()向上取整,FLOOR()向下取整,MOD()取模运算。 5. **转换函数**:TO_CHAR()将数据转换为字符串,TO_DATE()将字符串转换为日期,TO_NUMBER()将字符串转换为数字。 二、...

    oracle 提高晋级

    在Oracle数据库管理与开发过程中,熟练掌握日期时间处理的相关函数是至关重要的。这部分内容主要涉及到了Oracle中的日期函数及其应用,例如`sysdate`、`add_months`等。 ##### 1. `sysdate`函数 `sysdate`函数返回...

    oracle第4章 单行函数

    - `TRUNC`: 四舍五入到指定的小数位数。 - `CEIL`: 向上取整。 - `FLOOR`: 向下取整。 - `SIGN`: 返回数字的符号。 - `POWER`: 幂运算。 2. **随机数生成** - `RAND`: 生成随机数。 **示例代码**: ```sql ...

    SQLServer和Oracle常用函数对比

    四舍五入 - **SQLServer**: `SELECT ROUND(1.23456, 4) AS Value;` 结果为 `1.2346` - **Oracle**: `SELECT ROUND(1.23456, 4) AS Value FROM DUAL;` 结果为 `1.2346` ##### 6. 自然对数底数 - **SQLServer**: `...

    关于Oracle数据库的一些基础知识

    1. 数学函数:如`ROUND()`用于四舍五入,`SQRT()`用于求平方根,`MOD()`用于取模运算。 2. 日期时间函数:例如`SYSDATE`获取当前系统日期,`ADD_MONTHS()`增加月份,`EXTRACT()`提取日期部分。 3. 字符串函数:如`...

Global site tag (gtag.js) - Google Analytics