`
53873039oycg
  • 浏览: 843817 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Oracle函数numtodsinterval和numtoyminterval简记

 
阅读更多

     今天看到了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。

 

    个人认为还是自己写加上年,月之类的更简单。

 

     全文完。

 

  • 大小: 14.1 KB
  • 大小: 35.1 KB
  • 大小: 36 KB
  • 大小: 15 KB
  • 大小: 8.6 KB
  • 大小: 8.7 KB
0
2
分享到:
评论

相关推荐

    Oracle函数使用大全

    5. **转换函数**:TO_CHAR()将日期或数字转换为字符串格式,NUMTOYMINTERVAL()和NUMTODSINTERVAL()将数值转换为时间间隔。 6. **条件函数**:IFNULL()和NVL()用于处理空值,DECODE()根据条件返回不同值,CASE......

    第三章SQL和OracleSQL函数.pptx

    还可以使用NUMTODSINTERVAL和NUMTOYMINTERVAL函数来创建时间间隔。 了解并熟练掌握SQL和Oracle特定的函数对于数据库管理员、开发人员以及任何需要与数据库交互的人来说至关重要,这有助于高效、准确地处理数据,...

    sqlserver与oracle函数的对比

    - SQL Server 中,`GETDATE` 获取当前日期和时间,`DATEADD` 和 `DATEDIFF` 分别用于添加或减去日期部分,Oracle 对应的分别是 `SYSDATE`、`ADD_MONTHS` 和 `NUMTOYMINTERVAL` 或 `NUMTODSINTERVAL`。 - 在提取...

    Oracle函数大全

    - `NUMTOYMINTERVAL` 和 `NUMTODSINTERVAL`:将数字转换为时间间隔。 - `TO_BINARY_FLOAT` 和 `TO_BINARY_DOUBLE`:将数值转换为二进制浮点或双精度值。 - `RAWTOHEX` 和 `HEXTORAW`:在十六进制字符串和RAW类型...

    oracle的plsql基础,常用函数

    4. 转换函数:NUMTOYMINTERVAL和NUMTODSINTERVAL将数值转换为时间间隔。 5. 系统信息函数:USER获取当前用户,DBMS_METADATA用于获取对象的元数据信息。 6. 数学函数:SQRT用于计算平方根,EXP用于指数运算,LOG用于...

    12.Oracle时间函数1

    Oracle数据库在处理日期和时间数据时提供了丰富的函数和机制,使得开发者可以轻松地进行时间的显示、转换和计算。在Oracle中,日期时间通常被表示为`DATE`类型,它包含了世纪、年、月、日、小时、分钟和秒等7个属性...

    Oracle datediff函数

    3. **NUMTODSINTERVAL和TO_DSINTERVAL**: 这两个函数可以将数字转换为时间间隔,或反之。如果你想要得到一个整数表示的天数,可以先将差值转换成天数,再提取: ```sql SELECT TRUNC( Cast((date2 - date1) AS ...

    SQL Server与Oracle常用函数对比

    - SQL Server的`DATEADD()`和`DATEDIFF()`在Oracle中分别对应`ADD_MONTHS()`、`NUMTODSINTERVAL()`或`DATEDIFF()`(但Oracle的DATEDIFF不直接返回整数,而是相差的时间间隔)。 3. **数学和数值函数**: - 两系统...

    SQLServer和Oracle常用函数对比

    在数据库管理领域,SQL Server和Oracle都是广泛应用的关系型数据库系统,它们都提供了丰富的函数来处理数据。本篇文章将深入探讨SQL Server与Oracle中常用函数的对比,帮助读者更好地理解和运用这两种数据库。 一、...

    Oracle日期函数大全.pdf

    Oracle数据库系统提供了丰富的日期时间处理函数,用于对日期和时间数据进行操作和转换。在Oracle中,日期数据类型包括DATE,而时间戳则包括TIMESTAMP。以下是一些关键的Oracle日期时间函数及其用法: 1. **日期和...

    Oracle日期函数

    其中,日期函数是Oracle SQL中非常重要的组成部分,它们用于处理和操作日期和时间数据。本篇文章将详细探讨Oracle中的日期函数,以及如何利用这些函数进行日期时间处理。 在Oracle中,日期类型(DATE)不仅可以存储...

    第三章SQL和OracleSQL函数.ppt

    SQL,全称为Structured Query Language,是一种专门用于管理和处理关系数据库的...理解并熟练运用这些SQL语句和数据类型是有效管理和操作Oracle数据库的基础。通过学习和实践,你可以更高效地存储、检索和管理数据。

    ORACLE中的日期加减操作实例介绍

    如果想要得到年月日小时分钟的格式,可以使用`MONTHS_BETWEEN`函数和`NUMTOYMINTERVAL`、`NUMTODSINTERVAL`函数组合,如下所示: ```sql SQL&gt; SELECT NUMTOYMINTERVAL(MONTHS_BETWEEN(DT1, DT2), 'month') mon, ...

    数据库oracle中日期处理

    Oracle提供了丰富的函数和操作符来处理日期,使得我们可以轻松地完成诸如计算星期几、两个日期之间的天数等常见需求。以下是一些关于Oracle日期处理的关键知识点: 1. **日期数据类型**: Oracle数据库中的日期...

    oracle数据库对象.docx

    Oracle数据库对象是数据库管理系统的重要组成部分,它们为数据的存储、管理和操作提供了结构化的框架。本文将详细介绍Oracle数据库中的一些核心对象,包括普通表、分区表的创建与删除、索引和约束的管理、表空间的...

    Oracle日期之二

    Oracle提供了多种内置函数和操作符来处理日期,使得这些任务变得简单。 1. **日期数据类型** Oracle中的日期数据类型有DATE、TIMESTAMP以及INTERVAL。DATE类型包括年、月、日、小时、分钟和秒,而TIMESTAMP则增加...

    精确计算年龄方法

    - **Oracle SQL**:本文介绍的方法主要基于Oracle SQL实现,Oracle SQL是Oracle数据库系统中的SQL实现版本。 #### SQL语句详解 在提供的部分代码中,可以看到一个复杂的SQL查询,用于计算精确年龄。下面对其中的...

    oracle 11g 统计信息

    为了确保统计信息的准确性和时效性,Oracle 11g引入了一个名为DBMS_STATS的新包,并提供了一种称为“自动统计信息收集”的机制,该机制可以在预定的时间自动运行。 #### 自动统计信息收集的时间安排 根据题目中的...

Global site tag (gtag.js) - Google Analytics