`
meiyx
  • 浏览: 185818 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

oralce的时间格式

阅读更多
在网上看见不少oracle新学者对oracle的时间格式很烦,经常是设计了一个带时间字段的表之后,向表插入数据失败。回想起自己刚开始学习oracle时,也对这个时间格式摸不着头脑,虽然是小小的问题,高手们不屑于讨论,但对初学者来讲,这也是一个不大不小的坎,没找到门路的话, 可能几天都过不去,其实就是一层窗户纸,没什么难的。这里做一个简单的小结,因水平有限,请高手补充指正。
1 oracle对时间格式的数据存贮
oracle数据库中存放时间格式的数据,是以oracle特定的格式存贮的,占7个字节,与查询时显示的时间格式无关,具体哪个字节表示什么,我不太清楚,请高手补充。存贮的时间包括年月日时分秒,最小精度为秒,不存贮秒以下的时间单位。因此在一些前台支持毫秒级的程序(如PB客户端程序)连接到oracle数据库时应注意这点。查询时显示的时间格式,由会话环境决定,或者由用户定义,与数据库无关。

2 oracle时间显示形式
通常,客户端与数据库建立起连接后,oracle就会给一个缺省的时间格式数据的显示形式,与所使用的字符集有关。一般显示年月日,而不显示时分秒。例如,使用us7ascii字符集(或者是其他的英语字符集)时,缺省的时间格式显示为:28-Jan-2003,而使用zhs16gbk字符集(或其他中文字符集)时时间格式缺省显示为:2003-1月-28。向表中插入数据时,如果不使用转换函数,则时间字段的格式必须遵从会话环境的时间格式,否则不能插入。查看当前会话的时间格式,可以使用以下的SQL语句:
SQL> select sysdate from dual;

3 向oracle表中插入时间格式的数据
向oracle表插入时间格式的数据是一个相对来讲比较麻烦的事情,要么你严格遵从当前会话的时间格式书写你的时间值,要么使用转换函数自定义时间数据的格式。有两个与时间相关的转换函数:to_char 和 to_date 。to_char(时间值,时间格式)函数将时间值转换为字符串形式,通常在查询中使用;to_date(字符串,时间格式)则把格式字符串转换时间值,通常在insert 语句中使用。在日期格式中,各种日期格式
分量这里不作详细的讨论,请查oracle帮助文档中这两个函数的用法,或者查一查PL/SQL编程的书,讲得很详细的。

4 如何修改会话中的日期格式
修改当前会话中的日期格式据说有三种办法,我只做过前两种办法的试验,修改glogin.sql文件的办法我没有试过,不知道是不是真的能行。下面一一解说。
(1) 在sql*plus中修改当前会话的日期格式
SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
将当前会话的时间格式修改为这种格式: 2003-01-28 15:23:38,即四位年-两位月-两位日,空格,24小时的制的小时:分钟:秒。
这种修改方法,只对当前会话有效。注意,是对当前会话,而不是当前的sql*plus窗口。即如果你这样修改之后,又使用connect命令以其他用户连接到数据库或者是连接到其他的数据库,则这个日期格式就失效了,又恢复到缺省的日期格式。
(2) 修改注册表(只对windows系统)
在注册表\hkey_local_machine\software\oracle\home0主键中增加一个字串(8i版本),字串名为nls_date_format,字串的值为你希望定义的时间格式,如: yyyy-mm-dd hh24:mi:ss ,然后重新启动sql*plus。
这种修改方法,对sql*plus窗口有效,即不论你打开多少个sql*plus窗口,缺省的都是这种时间格式。修改服务器端的注册表无效,只有修改客户端的注册表才有效。
unix系统下有没有这类似的方法,我不知道,我不会用unix或者是linux系统。
(3) 修改$oracle_home\sqlplus\admin目录中glogin.sql文件
这种方法我没有试过,不敢乱说,以免误导大家。请了解这种方法的高手来指教。

5 日期格式的优先级
如果在一个具体的环境中,既修改了注册表,又使用alter session命令修改了当前会话,那么哪一种修改方法有效呢?alter session命令有效,它的优先级是最高的。即不管当前的客户端环境是什么样的,
注册表修改成什么样子了,只要你使用了alter session命令来修改了时间格式,那么就以你修改后的时间格式为准。
因此,如果直接使用sql*plus交互式查询或插入时间格式的数据,两种方法都可以用。如果使用sql文件来进行批量的插入或者是定时执行,最好在使用时间数据前使用alter session命令来修改会话,以保证这个sql语句的正常运行与环境无关。同样的,如果是前台的客户端程序中需要使用到时间格式的数据,最好也在使用之前修改会话,或者使用to_char或to_date函数进行转换(强烈推荐使用转换函数),以保证
程序运行与环境无关。

小结:
oracle数据库中有关时间类型的数据,定义了很多函数,特别是关于时间数据的计算,非常方便,当然,方便的前提是你对oracle的时间函数比较熟悉。在这里我有时候看到有些人存贮时间类型的数据时使用字符串类型的字段,我强烈的反对这种做法,不论是从系统的开销,还是从时间数据的计算来讲,或者是取这个数据中的某一个子数据,比如取时间中的月,取时间中的星期等等,都不如直接存贮为时间类型的数据来得方便。只要熟悉了oracle关于时间的函数,我相信大家会喜欢上oracle时间类型的数据的,非常灵活,功能强大,几乎可以做你所能想到的关于时间的一切事情——就看你对oracle的时间函数掌握程度了.
分享到:
评论

相关推荐

    oracle设置日期格式

    ### Oracle 设置日期格式 在Oracle数据库管理中,正确地设置日期格式对于数据处理至关重要。本文将详细介绍如何在Oracle环境中设置日期格式,包括通过会话级和系统级进行配置的方法,并探讨不同场景下的应用实例。 ...

    设置ORACLE时间格式

    - 应用程序:根据编程语言,如Java、Python等,可以在应用程序代码中设置相应的日期格式。 - 在服务器端: - 修改注册表:在Windows系统上,可以通过修改Oracle的注册表键值来永久改变`NLS_DATE_FORMAT`。这通常...

    oracle日期格式和java日期格式区别 HH24:mm:ss和HH24:mi:ss的区别

    oracle日期格式和java日期格式区别 HH24:mm:ss和HH24:mi:ss的区别 1.java 1)分钟用mm表示 24小时制: java(区分大小写):yyyy-MM-dd HH:mm:ss 12小时制: java(区分大小写):yyyy-MM-dd hh:mm:ss 2)...

    oracle日期及时间格式

    在 Oracle 中,可以使用不同的日期及时间格式,例如 YYYY-MM-DD、YYYY/MM/DD、DD/MM/YYYY 等,其中 YYYY-MM-DD 是最常用的日期格式。同时,Oracle 也提供了多种日期及时间格式的转换函数,例如 TO_DATE、TO_...

    Oracle时间格式.docx

    以下是一些关于Oracle时间格式的重要知识点,这些知识点涵盖了日期的获取、格式化、计算以及与星期、季度和闰年的关联。 1. **获取当前日期和时间**:`sysdate` 是Oracle中的一个内置函数,用于获取当前系统日期和...

    oracle中to-date详细用法示例(oracle日期格式转换).docx

    Oracle 中 TO_DATE 详细用法示例(Oracle 日期格式转换) TO_DATE 是 Oracle 中的一个日期和时间函数,用于将字符串转换为日期和时间类型。下面是 TO_DATE 的详细用法示例。 1. 日期和字符转换函数用法 TO_DATE ...

    Oracle数据库时间类型与JAVA之间的转换和应用.pdf

    为了避免格式错误,可以在Java程序中使用`to_date()`函数将字符串转换为Oracle可识别的日期格式。例如,你可以使用以下SQL语句: ```sql INSERT INTO tableName(datetime) VALUES (to_date(?, 'yyyy-mm-dd hh24:mi:...

    oracle11中to-date详细用法示例(oracle日期格式转换).pdf

    ..oracle11中to_date详细用法示例(oracle日期格式转换).pdf

    oracle 时间格式转化以及计算.pdf

    这里,to_date函数首先将'2017-08-05'这样的字符串转换为Oracle内部的日期格式,然后to_char函数再将转换后的日期格式化为指定的字符串格式。 系统时间在Oracle中通常使用sysdate函数来获取,而将其转换为字符串...

    Oracle日期格式.docx

    在处理日期格式时,理解各种格式代码如'y'(年)、'm'(月)、'd'(日)、'hh'(小时)、'mi'(分钟)和'ss'(秒)是非常重要的。这些代码可以帮助我们精确地转换和格式化日期和时间,确保数据的准确性和一致性。...

    Oracle日期格式.pdf

    在这个函数中,"要转换的字符串"是你想要转换的日期表示,而"转换的格式"则是对应的日期格式模型,必须与字符串中的日期元素匹配。例如: ```sql SELECT TO_DATE('2005-12-25 13:25:59', 'yyyy-mm-dd hh24:mi:ss') ...

    Oracle日期型数据格式

    为了确保数据的一致性和可读性,Oracle提供了多种方式来定义和处理日期格式。本文将深入探讨Oracle中的日期型数据格式及其转换方法。 #### 日期型数据格式 在Oracle中,默认情况下,日期数据类型会存储日期和时间...

    oracle日期时间判断函数

    它接受两个参数:要转换的字符串和日期格式模型。例如: ```sql SELECT TO_DATE('2022-01-01', 'YYYY-MM-DD') AS "ConvertedDate" FROM DUAL; ``` 这将把字符串'2022-01-01'转换为日期类型。如果尝试转换的字符...

    详解oracle 日期格式(总结)

    to_char(日期,”转换格式” ) 即把给定的日期按照“转换格式”转换。 转换的格式: 表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年 表示month的:mm 用2位数字表示月;...

    Oracle中日期格式字段处理[归类].pdf

    在Oracle数据库中,日期处理是常见的操作,尤其是在软件开发中,日期格式的转换和操作至关重要。Oracle提供了多种函数来处理日期字段,主要包括`TO_DATE`和`TO_CHAR`这两个核心函数,以及一些辅助的日期计算和格式化...

    Oracle时间格式.pdf

    Oracle数据库系统提供了丰富的...这些函数和格式元素在处理Oracle数据库中的日期时间数据时非常有用,可以帮助我们进行各种日期相关的计算和格式化。了解并熟练掌握这些知识点,对于进行复杂的日期时间操作至关重要。

    oracle导出时间格式转换

    大家都知道,从oracle数据库中导出数据时,如果其中有字段类型为date,那么导出时将会变成to_date('29-12-2010 10:20:30', 'hh24:mi:ss'),如果你要将这导出的数据在oracle客户端中执行,应该是没什么问题的,但是...

    oracle格式化查看json数据

    它可以用于控制日期、时间、数字和其他类型的显示格式,使得在查询结果中查看JSON数据更加整洁和易读。 5. PL/SQL包DBMS_JSON: Oracle提供了一个名为DBMS_JSON的PL/SQL包,其中包含了大量处理JSON的子程序,包括...

    从oracle数据库取出日期按格式显示

    - 当从数据库中获取日期并格式化时,应确保日期格式与数据库中存储的日期时间相匹配,以避免数据转换错误。 - 在实际应用中,可能还需要考虑日期范围、闰年处理等细节问题,尤其是在金融、保险等领域,精确的日期...

    oracle中日期格式总结.pdf

    Oracle 中的日期格式是数据库管理系统中非常重要的一部分,本文将对 Oracle 中的日期格式进行总结,涵盖日期格式、日期与字符转换函数、日期计算等方面的知识点。 日期格式 在 Oracle 中,日期格式可以分为两大类...

Global site tag (gtag.js) - Google Analytics