今天看到了numtodsinterval这个函数,以前没见过,搜索了解了下,内容如下:
(一)numtodsinterval函数:
numtodsinterval(<x>,<c>) ,x是一个数字,c是一个字符串(CHAR,VARCHAR2,NCHAR,NVARCHAR2),表明x的单位,常用的单位有 ('day','hour','minute','second')。
参考了链接:
http://dugu61888.blog.51cto.com/2947208/1091376
官方文档链接:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions103.htm
官方文档显示numtodsinterval和numtoyminterval都是oracle 10g r2及以上版本的函数。
简单的说numtodsinterval就是用来给时间类型加上n 天,n时, n分,或者n秒。测试例子为:
select sysdate, sysdate + numtodsinterval(3, 'day') as num_value, to_char(sysdate + numtodsinterval(3, 'day'), 'yyyy-mm-mm') char_val from dual;
结果为:
知道了函数是干什么的,就可以写个类似的。测试例子如下:
select to_date('2013-2-28 12:32:40', 'yyyy-mm-dd hh:mi:ss') init_day, to_date('2013-2-28 12:32:40', 'yyyy-mm-dd hh:mi:ss') + numtodsinterval(31, 'day') as add_day, to_date('2013-2-28 12:32:40', 'yyyy-mm-dd hh:mi:ss') + numtodsinterval(31, 'hour') as add_hour, to_date('2013-2-28 12:32:40', 'yyyy-mm-dd hh:mi:ss') + numtodsinterval(31, 'minute') as add_minute, to_date('2013-2-28 12:32:40', 'yyyy-mm-dd hh:mi:ss') + numtodsinterval(31, 'second') as add_second from dual;
结果为:
使用+1(天)类似写法为:
select to_date('2013-2-28 12:32:40', 'yyyy-mm-dd hh:mi:ss') init_day, to_date('2013-2-28 12:32:40', 'yyyy-mm-dd hh:mi:ss') + 31 as add_day, to_date('2013-2-28 12:32:40', 'yyyy-mm-dd hh:mi:ss') + 31 * 1 / 24 as add_hour, to_date('2013-2-28 12:32:40', 'yyyy-mm-dd hh:mi:ss') + 31 * 1 / 1440 as add_minute, to_date('2013-2-28 12:32:40', 'yyyy-mm-dd hh:mi:ss') + 31 * 1 / 86400 as add_second from dual;
结果为:
对比结果,完全相同。
结论:个人认为,还是+1(天)这种写法更简单,更方便。
(二)numtoyminterval 函数:
numtoyminterval(x,c)将x转为interval year to month数据类型,常用的单位有'year','month'。
参考了链接:
http://407882.blog.51cto.com/397882/95353
官方文档链接:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions104.htm
测试例子:
select sysdate, sysdate + numtoyminterval(3, 'year') as date_value, to_char(sysdate + numtoyminterval(3, 'year'), 'yyyy-mm-mm') char_val from dual;
numtoyminterval说白了就是给时间加上几年,几个月,对比测试例子:
select to_date('2013-02-28', 'yyyy-mm-dd') + numtoyminterval(1, 'year') add_year, to_date('2013-02-28', 'yyyy-mm-dd') + numtoyminterval(1, 'month') add_month from dual
结果为:
改写例子:
select add_months(to_date('2013-02-28', 'yyyy-mm-dd'), 12) add_year, add_months(to_date('2013-02-28', 'yyyy-mm-dd'), 1) add_month from dual
结果为:
对比后发现numtoyminterval加一个月后为2013-03-28,add_months为2013-03-31。
个人认为还是自己写加上年,月之类的更简单。
全文完。
相关推荐
5. **转换函数**:TO_CHAR()将日期或数字转换为字符串格式,NUMTOYMINTERVAL()和NUMTODSINTERVAL()将数值转换为时间间隔。 6. **条件函数**:IFNULL()和NVL()用于处理空值,DECODE()根据条件返回不同值,CASE......
还可以使用NUMTODSINTERVAL和NUMTOYMINTERVAL函数来创建时间间隔。 了解并熟练掌握SQL和Oracle特定的函数对于数据库管理员、开发人员以及任何需要与数据库交互的人来说至关重要,这有助于高效、准确地处理数据,...
- SQL Server 中,`GETDATE` 获取当前日期和时间,`DATEADD` 和 `DATEDIFF` 分别用于添加或减去日期部分,Oracle 对应的分别是 `SYSDATE`、`ADD_MONTHS` 和 `NUMTOYMINTERVAL` 或 `NUMTODSINTERVAL`。 - 在提取...
- `NUMTOYMINTERVAL` 和 `NUMTODSINTERVAL`:将数字转换为时间间隔。 - `TO_BINARY_FLOAT` 和 `TO_BINARY_DOUBLE`:将数值转换为二进制浮点或双精度值。 - `RAWTOHEX` 和 `HEXTORAW`:在十六进制字符串和RAW类型...
4. 转换函数:NUMTOYMINTERVAL和NUMTODSINTERVAL将数值转换为时间间隔。 5. 系统信息函数:USER获取当前用户,DBMS_METADATA用于获取对象的元数据信息。 6. 数学函数:SQRT用于计算平方根,EXP用于指数运算,LOG用于...
Oracle数据库在处理日期和时间数据时提供了丰富的函数和机制,使得开发者可以轻松地进行时间的显示、转换和计算。在Oracle中,日期时间通常被表示为`DATE`类型,它包含了世纪、年、月、日、小时、分钟和秒等7个属性...
3. **NUMTODSINTERVAL和TO_DSINTERVAL**: 这两个函数可以将数字转换为时间间隔,或反之。如果你想要得到一个整数表示的天数,可以先将差值转换成天数,再提取: ```sql SELECT TRUNC( Cast((date2 - date1) AS ...
- SQL Server的`DATEADD()`和`DATEDIFF()`在Oracle中分别对应`ADD_MONTHS()`、`NUMTODSINTERVAL()`或`DATEDIFF()`(但Oracle的DATEDIFF不直接返回整数,而是相差的时间间隔)。 3. **数学和数值函数**: - 两系统...
在数据库管理领域,SQL Server和Oracle都是广泛应用的关系型数据库系统,它们都提供了丰富的函数来处理数据。本篇文章将深入探讨SQL Server与Oracle中常用函数的对比,帮助读者更好地理解和运用这两种数据库。 一、...
Oracle数据库系统提供了丰富的日期时间处理函数,用于对日期和时间数据进行操作和转换。在Oracle中,日期数据类型包括DATE,而时间戳则包括TIMESTAMP。以下是一些关键的Oracle日期时间函数及其用法: 1. **日期和...
其中,日期函数是Oracle SQL中非常重要的组成部分,它们用于处理和操作日期和时间数据。本篇文章将详细探讨Oracle中的日期函数,以及如何利用这些函数进行日期时间处理。 在Oracle中,日期类型(DATE)不仅可以存储...
SQL,全称为Structured Query Language,是一种专门用于管理和处理关系数据库的...理解并熟练运用这些SQL语句和数据类型是有效管理和操作Oracle数据库的基础。通过学习和实践,你可以更高效地存储、检索和管理数据。
如果想要得到年月日小时分钟的格式,可以使用`MONTHS_BETWEEN`函数和`NUMTOYMINTERVAL`、`NUMTODSINTERVAL`函数组合,如下所示: ```sql SQL> SELECT NUMTOYMINTERVAL(MONTHS_BETWEEN(DT1, DT2), 'month') mon, ...
Oracle提供了丰富的函数和操作符来处理日期,使得我们可以轻松地完成诸如计算星期几、两个日期之间的天数等常见需求。以下是一些关于Oracle日期处理的关键知识点: 1. **日期数据类型**: Oracle数据库中的日期...
Oracle数据库对象是数据库管理系统的重要组成部分,它们为数据的存储、管理和操作提供了结构化的框架。本文将详细介绍Oracle数据库中的一些核心对象,包括普通表、分区表的创建与删除、索引和约束的管理、表空间的...
Oracle提供了多种内置函数和操作符来处理日期,使得这些任务变得简单。 1. **日期数据类型** Oracle中的日期数据类型有DATE、TIMESTAMP以及INTERVAL。DATE类型包括年、月、日、小时、分钟和秒,而TIMESTAMP则增加...
- **Oracle SQL**:本文介绍的方法主要基于Oracle SQL实现,Oracle SQL是Oracle数据库系统中的SQL实现版本。 #### SQL语句详解 在提供的部分代码中,可以看到一个复杂的SQL查询,用于计算精确年龄。下面对其中的...
为了确保统计信息的准确性和时效性,Oracle 11g引入了一个名为DBMS_STATS的新包,并提供了一种称为“自动统计信息收集”的机制,该机制可以在预定的时间自动运行。 #### 自动统计信息收集的时间安排 根据题目中的...