oracle 日期注册表,oracle日期转换格式

570212ae07c552c698ed37999b002632.png

在Internet上,许多新的Oracle学者对oracle的时间格式感到恼火. 通常,在设计具有时间字段的表后,将数据插入表中会失败. 回想起我刚开始学习Oracle时,也为这种时间格式感到困惑. 尽管这是一个小问题oracle 日期格式,但专家们不愿讨论oracle 日期格式,但是对于初学者来说,这也是一个巨大而困难的障碍,没有发现. 如果您在旅途中,可能几天都无法通行. 实际上,它只是一层窗纸,所以没有什么困难. 这是一个简单的摘要,由于级别有限,请高手添加更正.

1个Oracle以时间格式存储数据

以oracle特定的格式存储存储在oracle中的时间格式的数据,并占用7个字节. 它与查询期间显示的时间格式无关. 我不确定哪个具体字节代表什么,请大师补充. 存储的时间包括年,月,日,时,分和秒,最小精度为秒,不存储秒以下的时间单位. 因此,在连接到oracle时,某些在前台支持毫秒的程序(例如PB客户端程序)应注意这一点. 查询期间显示的时间格式由会话环境确定或由用户定义,与无关.

2个Oracle时间显示表格

619946bff5db1cd727e09cd32fc97307.gif

通常,在客户端与建立连接后,Oracle将提供默认的时间格式数据显示格式,该格式与所使用的字符集有关. 通常,显示的是年,月和日,而不是小时,分钟和秒. 例如,当使用us7ascii字符集(或其他英文字符集)时,默认时间格式显示为: 2003年1月28日,而当使用zhs16gbk字符集(或其他中文字符集)时,默认时间格式显示为显示为: 2003-January-28. 将数据插入表中时,如果不使用转换功能,则时间字段的格式必须遵循会话环境的时间格式,否则无法插入. 要查看当前会话的时间格式,可以使用以下SQL语句: SQL> select sysdate from dual; (您只能根据此语句的结果插入数据)

3将时间格式数据插入到oracle表中

将时间格式数据插入到oracle表中是一件相对麻烦的事情,要么您严格遵循当前会话的时间格式来写入您的时间值,要么使用转换功能来自定义时间数据的格式. 有两个与时间相关的转换函数: to_char和to_date. to_char(时间值,时间格式)函数将时间值转换为字符串形式,通常在查询中使用; to_date(字符串,时间格式)转换格式字符字符串转换时间值,通常在insert语句中使用. (哦,我没有在程序中执行此操作,所以我犯了一个错误. )在日期格式中,此处未详细讨论各种日期格式组件. 请检查Oracle帮助文档中这两个功能的用法,或检查PL / SQL编程. 这本书非常详细.

4如何在会话中修改日期格式

66ed0e68401341bd37fd911e470823e7.png

据说,有三种方法可以修改当前会话中的日期格式. 我只尝试了前两种方法. 我还没有尝试修改glogin.sql文件的方法. 我不知道这是否真的可能. 下面一一解释.

(1)在sql * plus SQL中修改当前会话的日期格式> alter session set nls_date_format ='yyyy-mm-dd hh24: mi: ss';将当前会话的时间格式修改为以下格式: 2003 -01-28 15:23:38,即,四位数的年-2月-2天,时空,24小时,小时: 分钟: 秒.

此修改方法仅对当前会话有效. 请注意,这是针对当前会话,而不是当前sql * plus窗口. 也就是说,如果在修改后使用connect命令与另一个用户连接到或连接到另一个,则日期格式将无效并且将恢复默认日期格式.

(2)修改注册表(仅适用于Windows系统)

0c893049ccde233f8305a9f922a99264.gif

在注册表hkey_local_machinesoftwareoraclehome0主键中添加字符串(8i版本,也可以是9i),字符串名称为nls_date_format,字符串值是您要定义的时间格式,例如: yyyy-mm-dd hh24 : mi: Ss,然后重新启动sql * plus. 此修改方法对sql * plus窗口有效,也就是说,无论您打开了多少个sql * plus窗口,默认值为此时间格式. 在服务器端修改注册表无效. 只有在客户端修改注册表才有效.

在Unix系统下是否有类似的方法?我不知道. 我不会使用Unix或Linux.

(3)我没有尝试过这种修改$ oracle_homesqlplusadmin目录中的glogin.sql文件的方法. 我不敢胡说八道,以免误导大家. 请高手请教这种方法.

5日期格式的优先级

52651892c3cf3771d0af7034d2b9bf4f.png

在特定环境中,如果两个注册表都被修改,并且alter session命令用于修改当前会话,那么哪种修改方法有效? alter session命令有效,其优先级最高. 也就是说,无论当前的客户端环境是什么,注册表都更改为什么,只要您使用alter session命令修改时间格式,便会以修改后的时间格式为准.

因此,如果直接使用sql * plus交互式查询或以时间格式插入数据,则可以使用两种方法. 如果将sql文件用于批处理插入或常规执行,则最好在使用时间数据之前使用alter session命令修改会话,以确保此sql语句的正常操作与环境无关. 同样,如果需要在前台的客户端程序中使用时间格式数据,则最好在使用会话之前对其进行修改,或者使用to_char或to_date函数进行转换(强烈建议使用转换功能)以确保该程序运行与环境无关.

摘要:

Oracle中有关时间类型的数据定义了许,尤其是时间数据的计算. 非常方便. 当然,方便的前提是您熟悉Oracle的时间功能. 在这里我有时会看到一些人在存储时间类型数据时使用字符串类型的字段. 我强烈反对这种方法,无论是从系统开销,从时间数据的计算还是从该数据中获取某些子数据,例如获取时间中的月份,获取时间中的星期等. ,不如直接存储时间类型数据那样方便. 只要您熟悉时间的oracle函数,我相信每个人都会喜欢oracle时间类型数据,该数据非常灵活且功能强大,几乎可以做所有您能想到的关于时间的事情-这取决于您的时间. oracle函数精通级别已通过Windows 2000 + oracle 805版本的测试. 如果有问题,请纠正我.

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-191629-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值