`
wangzhen5
  • 浏览: 80824 次
  • 性别: Icon_minigender_1
  • 来自: 河南省
社区版块
存档分类
最新评论

Oracle中的日期类型及相关函数

阅读更多
Oracle中的日期类型及其相关的函数(2010-07-16 09:36:35)
转载标签: 杂谈 分类: oracle 
Oracle中的日期类型及其相关的函数

Oracle提供了很多的内置的日期类型,包括如下几种:
Date
Timestamp
Timestamp With Time Zone
Timestamp With Local Time Zone
Interval Year To Month
Interval Day To Second

Date类型用于存储日期,精确到秒,可能通过设置NLS_DATE_FORMAT或者TO_CHAR方法来格式化日期的输出。

Timestamp用于存在日期与时间信息,这个类型比Date更精确,最小能精确到小数点后9位。下面是一个例子:

scott@ORCL> select nowDate,nowTimestamp from testtime;

NOWDATE   NOWTIMESTAMP
--------- -------------------------------
24-NOV-08 24-NOV-08 10.36.59.000000000 PM

Timestamp With Time Zone类型与Timestamp非常相似,只是是按照指定时区进行显示。

Timestamp With Local Time Zone  类型以上面的更加相似,这里是按照当前时区显示时间。
下面是一个例子:

scott@ORCL>select * from testtime;

NOWDATE   NOWTIMESTAMP                  TIMEWITHZONE            TIMEWITHLOCALZONE
--------- ----------------------------------- -----------------------------------
24-NOV-08 24-NOV-08 10.44.55.000000000 PM     24-NOV-08 10.44.55.000000 PM +08:00 24-NOV-08 10.44.55.000000 PM

可以使用ALTER SESSION SET来设置Timestamp的输出,如:

scott@ORCL> ALTER SESSION SET NLS_DATE_FORMAT =
                          'YYYY-MM-DD HH24:MI:SS';
Session altered.
scott@ORCL> ALTER SESSION SET NLS_TIMESTAMP_FORMAT
                      = 'YYYY-MM-DD HH24:MI:SS.FF';
Session altered.
scott@ORCL> ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT
                     = 'YYYY-MM-DD HH24:MI:SS.FFTZH:TZM';
Session altered.

scott@ORCL>/

NOWDATE         NOWTIMESTAMP            TIMEWITHZONE                TIMEWITHLOCALZONE
------------------- ------------------------------ ----------------------------------- ------------------------
2008-11-24 22:44:55 2008-11-24 22:44:55.000000000   2008-11-24 22:44:55.000000+08:00    2008-11-24 22:44:55.000000

Interval Year[(precision)] To Month类型用来表示一段以年和月为单位时间,主要用来表达两个时间之间的间隔,如1年又3个月。在year上面可以设定一个精确度,取值为0-9,默认的值为2。

Interval Day[(precision)] To Second 与上面的类型类似,主要用来表示以天,小时,分钟,秒为单位的一段时间。在day上面可以设定一个精确度,取值为0-9,不设定时默认为6。
这两个Interval类型可以进行加,减,乘,除运算。下面通过两个例子来看看这两种类型如何工作:
scott@ORCL>create table test_interval(ts1 timestamp(2),y2m interval year(4) to month,d2s interval day(4) to second);

Table created

scott@ORCL>insert into test_interval values(systimestamp,to_YMInterval('4-7'),to_DSInterval('5 02:20:30.30));

scott@ORCL> select * from test_interval;

TS1              Y2M         D2S
------------------------- ---------- ------------------------------
2008-11-24 23:06:10.71      +0004-07    +0005 02:20:30.300000

通过上面例子可以看到,to_YMInterval()和 to_DSInterval()方法能将一个字符串转换成Interval类型
下面这个例子展示一下这个类型的使用方法:

scott@ORCL>  select sysdate,sysdate+t.y2m,sysdate+t.d2s from test_interval t;

SYSDATE         SYSDATE+T.Y2M    SYSDATE+T.D2S
------------------- ------------------- -------------------
2008-11-24 23:25:02 2013-06-24 23:25:02 2008-11-29 01:45:32

从上面的查询可以看到,sysdate+t.y2m在当时时间上增加了4年又7个月,sysdate+t.d2s在当时时间上增加了5天,2小时,20分,30秒。


下面看看Oracle提供的与日期相关的函数
Trunc(date [,fmt])          这个函数用来截取日期,精度由fmt控制
To_Timestamp(var1,fmt)     将字符串转换成Timestamp类型
TO_DATE(var1,fmt)          将字符串转换成Date类型
Add_months(date,n)         增加n个月,为负数时是减少n个月
Last_day(date)             当月的最后一天,可通过与Add_months结合取得其它的月的最后一天
Month_between(date,date)   返回两个时间的相关的月数
Next_day(date,dow)        dow表示星期几,返回date的下一个dow的日期
Round(date [,fmt])         和数据的Round类似,fmt表示Round的精度,默认为天,如HH24,DD等
Extract(var from date)     从date中取出相应的年,月,日,小时,分钟,秒等信息

下面是一些例子:
SQL> select sysdate,add_months(sysdate,+1) next_month,add_months(sysdate,-1) pro_month from dual

SYSDATE          NEXT_MONTH       PRO_MONTH
-------------------- -------------------- --------------------
25-Nov-2008 22:29:35 25-Dec-2008 22:29:35 25-Oct-2008 22:29:35

SQL>  select sysdate,
  2  extract(year from sysdate) year,
  3  extract(month from sysdate) month,
  4  extract(day from sysdate) day
  5* from dual

SYSDATE            YEAR      MONTH      DAY
-------------------- ---------- ---------- ----------
25-Nov-2008 22:32:01       2008     11       25


SQL> select last_day(sysdate) last_day from dual;

LAST_DAY
---------
30-NOV-08


SQL> select last_day(add_months(sysdate,1)) next_last_day from dual

NEXT_LAST_DAY
--------------------
31-Dec-2008 22:46:25


SQL> select sysdate,round(sysdate,'HH24') from dual;

SYSDATE          ROUND(SYSDATE,'HH24'
-------------------- --------------------
25-Nov-2008 22:47:23 25-Nov-2008 23:00:00
分享到:
评论

相关推荐

    oracle自定义日期函数

    Oracle 日期处理函数是数据库管理系统中非常重要的一部分,最近看到有人在做 T-SQL 与 PL/SQL 的转化,问了些有关时间函数的处理。在 PL/SQL 中,Oracle 提供了其他的方法来处理日期函数,例如 DATE_ADD 函数。在 T-...

    ORACLE中日期和时间函数汇总

    Oracle 中的日期和时间函数是数据库管理系统中非常重要的一部分,掌握这些函数可以帮助开发者和 DBA 更好地处理日期和时间相关的操作。 日期和字符转换函数 Oracle 中提供了两个主要的日期和字符转换函数:TO_...

    oracle日期时间判断函数

    针对标题"oracle日期时间判断函数"和描述中提到的内容,我们可以深入探讨两个关键的函数,它们主要用于判断字符串是否可以转换为合法的日期时间格式。 1. TO_DATE函数: TO_DATE是Oracle中用于将字符串转换为日期...

    Oracle中trunc()函数用法处理日期、数字类型数据

    TRUNC 函数可以截断日期类型的数据,返回截断后的日期值。其语法格式如下: ``` TRUNC(date[,fmt]) ``` 其中,date 是一个日期值,fmt 是日期格式,该日期将由指定的元素格式所截去。如果忽略 fmt,则由最近的日期截...

    Oracle日期函数练习

    Oracle 日期函数是 Oracle 数据库中的一组功能强大且广泛使用的函数,它们可以对日期进行各种操作和计算,本次练习涵盖了 Oracle 中常用的日期函数,包括获取当前系统时间、对日期的月进行加减、获取给定日期所在月...

    oracle日期函数字符函数聚合函数

    Oracle数据库中的日期函数、字符函数和聚合函数是数据库操作中常用的功能,对于数据处理和...以上就是Oracle日期函数、字符函数和部分聚合函数的详细介绍,理解并熟练运用这些函数可以极大地提高数据处理和查询的效率。

    oracle中日期类型与unix 时间戳的转换

    oracle中日期类型与unix 时间戳的转换, Unix时间戳记是从'1970-01-01 00:00:00'GMT开始的秒数,表现为整数型。 Oracle中的时间是Date型,以下函数提供了两种时间转换的Oracle函数 --unix时间戳与date时间互转 ...

    oracle常用函数和类型

    在Oracle中,数据类型是定义变量、列或者常量的格式,而函数则是执行特定任务的预定义过程。 首先,让我们来看看Oracle中的常用数据类型: 1. NUMBER:这是Oracle中最通用的数字类型,可以存储整数和浮点数,允许...

    oracle数据类型及函数

    在Oracle中,数据类型用于定义字段可以存储的数据种类,而函数则帮助我们对数据进行各种操作。以下是对这些概念的详细说明: 1. **Oracle 数据类型**: - **字符型**: - `CHAR(n)`:定长字符串,长度为n个字节,...

    Oracle日期函数大全[文].pdf

    Oracle日期函数大全是Oracle数据库中处理日期和时间的函数大全,包括TO_DATE、TO_CHAR等函数。这些函数可以对日期和时间进行各种操作,例如将日期转换为字符串、获取当前日期和时间、计算两个日期之间的天数等。 TO...

    ORACLE中的经典SQL及函数

    这些函数主要用于处理单行数据,包括字符、数字、日期、转换和混合类型等,可以应用于SELECT、WHERE、ORDER BY等子句。例如,`TO_CHAR`函数用于格式化日期或数字,`UPPER`函数将文本转换为大写,而`SOUNDEX`则用于...

    oracle日期函数全面总结

    通过学习和掌握以上Oracle日期函数,你可以轻松地进行日期和时间的计算、比较和格式化,提升数据库操作的效率。同时,了解如何处理时区问题也是非常重要的,特别是在分布式系统中。希望这些知识对你在处理Oracle...

    ORACLE 数据类型及常用函数培训

    以下是对标题和描述中提及的Oracle数据类型及常用函数的详细讲解。 **一、Oracle数据类型** 1. **字符数据类型** - `Char(n)`:固定长度的字符串,最多可存储n个字符,不足会填充空格。 - `Varchar2(n)`:可变...

    oracle 函数大全 参考函数 手册 速查 chm格式

    10. 游标和查询相关函数:如CURSOR(定义游标)、FETCH(从游标获取数据)以及嵌套查询中的聚合函数。 11. 连接函数:如CONNECT_BY_ROOT(找到层次查询的根节点)、START_WITH(指定层次查询的起始节点)等,处理...

    oracle数据库时间函数

    Oracle 数据库中并没有直接使用 `CONVERT` 函数来处理日期和时间的方式,这个函数在 SQL Server 中被用来进行数据类型的转换,特别是日期和时间类型的转换。然而,Oracle 提供了类似的功能,如 `TO_DATE` 和 `TO_...

    oracle(数据类型函数).

    里面有详细的oracle函数 1、Oracle数据类型 2、Oracle函数分为单行函数和多行函数两大类(sql_function) 单行函数分类 字符函数 数值函数 日期函数 转换函数 通用函数 函数嵌套 分组函数:集合操作符(了解) 实现...

    oracle日期函数

    Oracle 日期函数是数据库管理系统中经常使用到的函数,用于处理日期和时间相关的操作。下面是 Oracle 日期函数的详细介绍: 1. 日期和字符转换函数 Oracle 提供了两个重要的日期和字符转换函数:TO_DATE 和 TO_...

    Oracle中实现datadiff函数

    这是因为Oracle中的日期函数通常接受日期类型作为输入参数,而实际应用中可能需要处理的是字符串格式的日期数据。 ##### CDate 函数 ``` CREATE OR REPLACE FUNCTION CDate (dateChar IN VARCHAR2) RETURN DATE IS...

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

    Oracle数据库中的函数可以分为多种类型,包括内置函数、数学函数、字符串函数、日期时间函数、转换函数、系统信息函数等。例如: 1. **内置函数**:如`SYSDATE`用于获取当前系统日期,`USER`获取当前登录用户的...

    oracle 类型转换函数

    ### 日期类型转换函数 1. **MONTHS_BETWEEN**: 计算两个日期之间的月份数。例如,`MONTHS_BETWEEN('04-11-05','11-1-01')`返回大约`57.7741935`。 示例:`SELECT MONTHS_BETWEEN('04-11-05','11-1-01') FROM ...

Global site tag (gtag.js) - Google Analytics