`
obullxl
  • 浏览: 183235 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Oralce中Trunc,Round截取日期,数据的用法简介

阅读更多

先看一条Oracle SQL语句:

select col_name
from tab_name
where col_time >= to_date(to_char(sysdate, 'YYYY-MM-DD'), 'YYYY-MM-DD')
    and col_time > to_date(to_char(sysdate, 'YYYY-MM-DD'), 'YYYY-MM-DD') + 1

刚看到这条语句,我笑了:这位哥们在干什么呢,把一个日期先转化成字符串,然后又把该字符串转化为日期?

 

仔细一看,原来这位哥们是有事情要做的:查询当天的记录,是从当天0点0分0秒开始,一笔记录也不能错过!

 

这个语句有点长,可以优化下,具体的就是:Trunc和Round!

 

一、数字作为参数

Trunc(number[, 小数位数] :直接截取,不进行四舍五入等操作

Round(number[, 小数位数]:截取的同时,进行四舍五入操作。

 

小数位数:正数,0,负数

举几个例子:

// 89.98	89.99
select trunc(89.985, 2), round(89.985, 2) from dual;

// 89.9	90
select trunc(89.985, 1), round(89.985, 1) from dual;

// 89.9	89.9
select trunc(89.945, 1), round(89.945, 1) from dual;

// 89	90
select trunc(89.985, 0), round(89.985, 0) from dual;

// 89	90
select trunc(89.985), round(89.985) from dual;

// 80	90
select trunc(89.985, -1), round(89.985, -1) from dual;

// 0	100
select trunc(89.985, -2), round(89.985, -2) from dual;

 例子一看就明白了,跟JAVA中的floor, round 还有几分相象!!

 

二、时间作娄参数

 

官方两个网页:

http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/functions218.htm

 

http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/functions253.htm#i1002084

 

第一个网页我想说明的是用法,第二个网页就是区别了。

 

Trunc(date[, fmt]), Round(date[, fmt])

 

格式默认为日期,即为dd。

格式可以为:年,月,日,时,分,没有秒。

 

Trunc也是直接截取,不往高们加1操作(类似四舍五入);

Round就有可能加1了,当:

    时间的月超过了7月1日,则年加1;

    时间的日超过了16号,则月加1;

    其它的不加。

 

以下也是几个例子:

select trunc(to_date('20100715-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'MM'),
       round(to_date('20100715-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'MM')
from dual;
select trunc(to_date('20100716-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'MM'),
       round(to_date('20100716-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'MM')
from dual;
select trunc(to_date('20100616-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'YYYY'),
       round(to_date('20100616-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'YYYY')
from dual;
select trunc(to_date('20100716-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'YYYY'),
       round(to_date('20100716-10:15:17', 'YYYYMMDD-HH24:MI:SS'), 'YYYY')
from dual;

select trunc(sysdate,'yyyy'), round(sysdate, 'yyyy') from dual;
select trunc(sysdate,'mm'), round(sysdate,'mm') from dual;
select trunc(sysdate,'dd'), round(sysdate,'dd') from dual;
select trunc(sysdate,'HH24'), round(sysdate,'HH24') from dual;
select trunc(sysdate,'MI'), round(sysdate,'MI') from dual;

 

结果,大家自己试验,条件我都准备好了,运行下就行,也让大家真正理解它们之间的区别吧!

 

三、回到开头

开头的那个SQL现在可以重写了:

 

to_date(to_char(sysdate, 'YYYY-MM-DD'), 'YYYY-MM-DD')


可以为:trunc(sysdate, 'DD'),也可以为:trunc(sysdate)

但是,根据这位哥们的意图,最好不要用round,呵呵。

 

本文完了~~~~~~~~

1
0
分享到:
评论

相关推荐

    oracle trunc()函数的使用方法

    Oracle数据库中的TRUNC()函数是一个非常实用的工具,主要用于日期和数字的截取操作。它在数据处理和分析中扮演着重要角色,特别是在报表生成、数据整理和计算时。下面我们将详细探讨TRUNC()函数在日期和数字方面的...

    oracle_日期_加减方法

    在Oracle数据库中,日期操作是常见的SQL查询任务,特别是在处理历史数据或进行时间相关的分析时。Oracle提供了丰富的函数来帮助用户对日期进行加减操作,这些功能强大且灵活的函数使得开发者能更精确地处理时间数据...

    Oracle中的日期时间存储.docx

    Oracle数据库在处理日期和时间数据时,采用了一种特定的...在实际使用中,根据业务需求选择合适的函数和方法,可以有效地管理和操纵日期时间数据。通过理解这些基本概念和操作,可以更高效地进行数据库查询和数据处理。

    oracle日期处理全集

    除了这些函数,Oracle还提供了其他如trunc()(截取日期到指定部分,如年、月、日等)、extract()(提取日期或时间的特定部分,如年、月、日、小时等)以及interval数据类型等来支持复杂的日期和时间操作。...

    Oracle round()函数与trunc()函数区别介绍

    在Oracle数据库中,`round()` 和 `trunc()` 函数是两种非常常见的数值处理函数,它们主要用于对数字进行精度调整。然而,它们在处理小数部分时有着显著的区别,这使得它们在不同的场景下有着各自的用途。下面我们将...

    oracle内部日期查询.pdf

    在插入日期时间数据到表中时,如果直接使用非转换格式的日期,必须确保它符合当前会话的时间格式,否则插入操作将会失败。如果需要插入特定格式的日期,可以使用转换函数如`TO_DATE`进行格式化。 Oracle提供了一...

    oracle数据库中常用日期型函数 .pdf

    在Oracle数据库中,日期型函数是处理日期和时间数据的关键工具。...在实际应用中,你可能还需要结合其他函数,如`trunc()`(截取日期到指定精度)或`round()`(四舍五入日期)来实现更精确的日期处理。

    oracle内部日期查询.docx

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

    oracle函数大全(CHM格式).rar

    在这个"Oracle函数大全"的CHM文件中,我们可以期待找到分类清晰、全面详尽的Oracle函数文档,包括函数的语法、参数、返回值、使用示例以及可能遇到的问题和解决方法。 Oracle数据库中的函数可以分为多种类型,包括...

    东软oracle在线期中考试一.docx

    使用 TRUNC 函数可以截取字符串的部分字符。 知识点八:非等值联接 非等值联接是 Oracle 数据库中的一个联接类型,用于连接两个或多个表,但不使用等值条件。例如,使用 SELF JOIN 可以连接同一个表中的不同行。 ...

    ORACLE数据库及SQL语言考试题一含答案.pdf

    4. round 与 trunc 在处理数字方面的区别:round 返回四舍五入后的值,而trunc 返回截取后的值,不进行四舍五入。 5. union 与 union all 的区别:都是用来将查询结果进行合并的操作。区别在于union 会剔除合并内容...

    SQLServer和Oracle的常用函数对比

    本文将基于给定文件信息,深入探讨和对比SQLServer与Oracle中的一些常用函数,这些函数涵盖了数学运算、数值处理、字符串操作等多个方面,对于数据库开发者和管理员而言,掌握这些函数的使用方法是提升工作效率的...

    Oracle_plsql常用方法汇总

    Oracle PL/SQL 中的常用方法汇总 Oracle PL/SQL 是一种强大的编程语言,广泛应用于 Oracle 数据库管理系统中。下面是 Oracle PL/SQL 中的一些常用方法汇总: 一、表操作 在 Oracle PL/SQL 中,表操作是最基本也是...

    oracle常用函数功能演示

    `ROUND`和`TRUNC`函数在日期处理上也十分实用,它们可以根据指定的日期格式进行日期的舍入或截取。 类型转换函数允许我们将数值和字符数据相互转换,这对于处理不同类型的数据非常有用。例如,我们可以使用`TO_CHAR...

    传智播客Oracle.rar

    这些文档可能包含了关于日期函数的使用,例如DATEPART、EXTRACT或TO_CHAR等,用于提取日期中的年、月、日等部分,以及四舍五入函数如ROUND、TRUNC等,用于处理数值的精度问题。通过解决这些练习题,学员能巩固所学...

    oracle常见函数整理

    Oracle提供了多种函数来处理日期、数字和字符类型的数据,以下是常见的Oracle函数整理: 日期函数: 1. 日期转字符型:to_char()函数将日期类型转换为字符类型,例如to_char(sysdate,'YYYY-MM-DD')将当前日期转换...

    ORACLE 函数 chm下载

    比如,当你需要处理日期时,可能需要用到TRUNC()函数来截取日期到指定精度,或者使用ROUND()和CEIL()来对数字进行四舍五入或向上取整。对于大数据处理,可能要用到聚合函数SUM()、AVG()、MAX()、MIN()等。 此外,...

    oracle最常用的函数或方法总结

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其丰富的函数和方法库为SQL查询提供了强大的支持。在日常的数据操作和分析中,掌握一些常用的Oracle函数和方法是至关重要的。以下是对"Oracle最常用的...

    Oracle官方ppt3

    本章主要探讨了在Oracle SQL中使用各种函数来处理数据的方法,包括单行函数、字符函数、数字函数和日期函数,这些都是数据库查询和数据操作的基础。 首先,SQL函数是数据库系统中的一个重要组成部分,它们用于处理...

Global site tag (gtag.js) - Google Analytics