Oracle时间运算(日期截取及四舍五入)
如同对数字进行四舍五入和按位截取一样,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
相关推荐
`ADD_MONTHS`函数用于给日期增加指定的月数,`LAST_DAY`得到一个月的最后一天,`MONTHS_BETWEEN`计算两个日期之间的月数差,`NEW_TIME`转换时区,`NEXT_DAY`找到下一个特定的星期几,`ROUND`四舍五入日期时间,...
### ORACLE常用日期函数集合详解 #### 一、概述 在Oracle数据库中,日期处理是一项非常重要的功能。本文将详细介绍一些常用的Oracle日期函数及其应用场景,帮助数据库管理员或开发者更好地理解和运用这些函数,以...
- 数学函数:如SQRT()开平方,MOD()求模,ROUND()四舍五入等。 4. CASE表达式: CASE语句允许基于条件执行不同的计算或返回不同的值,分为简单CASE和搜索CASE两种形式。 5. 分组和聚合: GROUP BY语句用于将...
`NEW_TIME`转换时区,`NEXT_DAY`找到下一个指定的工作日,`ROUND`对日期/时间值四舍五入,`SYSDATE`获取当前日期和时间,`TO_CHAR`和`TO_DATE`用于日期和字符串之间的转换,以及`TRUNC`用于截取日期/时间到指定元素...
例如,`TO_DATE('2022-01-01 12:00:00', 'YYYY-MM-DD HH24:MI:SS')`会将字符串转换为指定日期时间格式的DATE对象。 2. TO_CHAR函数:此函数用于将DATE类型转换为字符串。你可以自定义输出格式,如`TO_CHAR(SYSDATE,...
- **日期舍入和截取**:ROUND和TRUNC函数可以按照指定的日期格式对日期进行四舍五入或截取。 **4. 类型转换函数** 类型转换函数用于在数值和字符之间转换数据类型,例如将数值转换成字符串或反之。 **总结** ...
* ROUND:四舍五入得到新的日期。 * SESSIONTIMEZONE:返回当前会话的时区。 * SYS_EXTRACT_UTC:从提供的datetime中以UTC返回时间。 * SYSTIMESTAMP:返回当前的日期和时间。 * TRUNC:截取日期。 * TZ_OFFSET:...
例如,`SIN`, `COS`, `TAN`用于三角计算,`POWER`用于求幂,`SQRT`用于求平方根,`EXP`用于计算自然指数,而`ABS`, `SIGN`, `CEIL`, `FLOOR`, `ROUND`, `TRUNC`则帮助我们进行数值的处理和四舍五入。`MOD`函数则用于...
在Oracle数据库中,时间处理是常见的操作,...以上代码示例展示了Oracle SQL中处理时间的基本方法,通过这些函数和运算,你可以方便地进行时间范围的计算和查询。在实际应用中,可以根据具体需求调整和扩展这些表达式。
以上知识覆盖了Oracle中常见的日期和时间操作,包括基本的日期运算、日期的提取和转换、特殊日期的计算以及时间区间的处理。在实际开发和数据库管理中,熟练掌握这些操作对于处理时间相关的业务逻辑至关重要。
1. 数学函数:如`ROUND()`用于四舍五入,`SQRT()`用于求平方根,`MOD()`用于取模运算。 2. 日期时间函数:例如`SYSDATE`获取当前系统日期,`ADD_MONTHS()`增加月份,`EXTRACT()`提取日期部分。 3. 字符串函数:如`...
2. `TRUNC`截断小数部分,不进行四舍五入。 3. `MOD`计算两个数相除后的余数。 日期函数在Oracle中也非常重要,因为数据库经常需要处理日期和时间数据。Oracle内部使用数字来存储日期,但默认的显示格式是DD-MON-RR...
1. **数值函数**:这些函数处理数值数据,如`ABS()`返回绝对值,`ROUND()`进行四舍五入,`MOD()`计算余数,`SQRT()`求平方根等。 2. **字符串函数**:处理字符数据,如`CONCAT()`连接字符串,`SUBSTR()`截取子串,`...
在Oracle数据库中,时间转换和时间算法是数据库管理员和开发人员在处理日期和时间数据时经常需要用到的功能。本文将详细讲解Oracle中如何进行时间的截取、计算以及格式化。 首先,Oracle提供了一系列的函数来截取...
四舍五入函数ROUND(n[,m])允许我们根据指定的小数位数对数值进行四舍五入。其中,n是要四舍五入的数值,m则是保留的小数位数。如果m为正数,则保留小数点后m位;如果m为负数,则保留小数点前m位;若省略m,则默认为0...
- `TRUNC`:截取,不会进行四舍五入 - `MOD`:取余数 4. **转换函数:** - `TO_DATE`:将字符型数据转换为日期类型 - `TO_CHAR`:将数字或日期类型转换为字符类型 - `TO_NUMBER`:将字符转换为数值类型 5. **...
1. **数值函数**:Oracle提供了多种处理数字的函数,如`ROUND()`用于四舍五入,`TRUNC()`用于截断小数,`MOD()`计算余数,`DECODE()`用于条件判断,以及`POWER()`和`SQRT()`用于求幂和平方根。 2. **日期时间函数**...
1. **数学函数**:如ROUND、TRUNC、MOD等,用于对数字进行四舍五入、截断或取模运算。 2. **日期和时间函数**:如SYSDATE、ADD_MONTHS、EXTRACT等,帮助处理日期和时间数据,进行日期计算或提取日期部分。 3. **字符...