先看一条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,呵呵。
本文完了~~~~~~~~
分享到:
相关推荐
Oracle数据库中的TRUNC()函数是一个非常实用的工具,主要用于日期和数字的截取操作。它在数据处理和分析中扮演着重要角色,特别是在报表生成、数据整理和计算时。下面我们将详细探讨TRUNC()函数在日期和数字方面的...
在Oracle数据库中,日期操作是常见的SQL查询任务,特别是在处理历史数据或进行时间相关的分析时。Oracle提供了丰富的函数来帮助用户对日期进行加减操作,这些功能强大且灵活的函数使得开发者能更精确地处理时间数据...
Oracle数据库在处理日期和时间数据时,采用了一种特定的...在实际使用中,根据业务需求选择合适的函数和方法,可以有效地管理和操纵日期时间数据。通过理解这些基本概念和操作,可以更高效地进行数据库查询和数据处理。
除了这些函数,Oracle还提供了其他如trunc()(截取日期到指定部分,如年、月、日等)、extract()(提取日期或时间的特定部分,如年、月、日、小时等)以及interval数据类型等来支持复杂的日期和时间操作。...
在Oracle数据库中,`round()` 和 `trunc()` 函数是两种非常常见的数值处理函数,它们主要用于对数字进行精度调整。然而,它们在处理小数部分时有着显著的区别,这使得它们在不同的场景下有着各自的用途。下面我们将...
在插入日期时间数据到表中时,如果直接使用非转换格式的日期,必须确保它符合当前会话的时间格式,否则插入操作将会失败。如果需要插入特定格式的日期,可以使用转换函数如`TO_DATE`进行格式化。 Oracle提供了一...
在Oracle数据库中,日期型函数是处理日期和时间数据的关键工具。...在实际应用中,你可能还需要结合其他函数,如`trunc()`(截取日期到指定精度)或`round()`(四舍五入日期)来实现更精确的日期处理。
`NEW_TIME`转换时区,`NEXT_DAY`找到下一个指定的工作日,`ROUND`对日期/时间值四舍五入,`SYSDATE`获取当前日期和时间,`TO_CHAR`和`TO_DATE`用于日期和字符串之间的转换,以及`TRUNC`用于截取日期/时间到指定元素...
在这个"Oracle函数大全"的CHM文件中,我们可以期待找到分类清晰、全面详尽的Oracle函数文档,包括函数的语法、参数、返回值、使用示例以及可能遇到的问题和解决方法。 Oracle数据库中的函数可以分为多种类型,包括...
使用 TRUNC 函数可以截取字符串的部分字符。 知识点八:非等值联接 非等值联接是 Oracle 数据库中的一个联接类型,用于连接两个或多个表,但不使用等值条件。例如,使用 SELF JOIN 可以连接同一个表中的不同行。 ...
4. round 与 trunc 在处理数字方面的区别:round 返回四舍五入后的值,而trunc 返回截取后的值,不进行四舍五入。 5. union 与 union all 的区别:都是用来将查询结果进行合并的操作。区别在于union 会剔除合并内容...
本文将基于给定文件信息,深入探讨和对比SQLServer与Oracle中的一些常用函数,这些函数涵盖了数学运算、数值处理、字符串操作等多个方面,对于数据库开发者和管理员而言,掌握这些函数的使用方法是提升工作效率的...
Oracle PL/SQL 中的常用方法汇总 Oracle PL/SQL 是一种强大的编程语言,广泛应用于 Oracle 数据库管理系统中。下面是 Oracle PL/SQL 中的一些常用方法汇总: 一、表操作 在 Oracle PL/SQL 中,表操作是最基本也是...
`ROUND`和`TRUNC`函数在日期处理上也十分实用,它们可以根据指定的日期格式进行日期的舍入或截取。 类型转换函数允许我们将数值和字符数据相互转换,这对于处理不同类型的数据非常有用。例如,我们可以使用`TO_CHAR...
这些文档可能包含了关于日期函数的使用,例如DATEPART、EXTRACT或TO_CHAR等,用于提取日期中的年、月、日等部分,以及四舍五入函数如ROUND、TRUNC等,用于处理数值的精度问题。通过解决这些练习题,学员能巩固所学...
Oracle提供了多种函数来处理日期、数字和字符类型的数据,以下是常见的Oracle函数整理: 日期函数: 1. 日期转字符型:to_char()函数将日期类型转换为字符类型,例如to_char(sysdate,'YYYY-MM-DD')将当前日期转换...
比如,当你需要处理日期时,可能需要用到TRUNC()函数来截取日期到指定精度,或者使用ROUND()和CEIL()来对数字进行四舍五入或向上取整。对于大数据处理,可能要用到聚合函数SUM()、AVG()、MAX()、MIN()等。 此外,...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,其丰富的函数和方法库为SQL查询提供了强大的支持。在日常的数据操作和分析中,掌握一些常用的Oracle函数和方法是至关重要的。以下是对"Oracle最常用的...
本章主要探讨了在Oracle SQL中使用各种函数来处理数据的方法,包括单行函数、字符函数、数字函数和日期函数,这些都是数据库查询和数据操作的基础。 首先,SQL函数是数据库系统中的一个重要组成部分,它们用于处理...