商业和数据库很多时候必须跨时区工作,从9i开始,oracle环境开始有了时区意识,通过指定数据库的时区和使用TIMESTAMP WITH TIME ZONE和TIMESTAMP WITH LOCAL TIME ZONE数据类型来实现该功能。

TIMESTAMP WITH TIME ZONE不会存储数据库时区,但是有一个指示用来说明该时间所使用的时区。TIMESTAMP WITH LOCAL TIME ZONE会同时存储数据库时区,并且会根据查询客户端的时区进行相应的转换。

数据库时区可以在创建时在create database命令中设置,也可以使用alter database set TIME_ZONE=...来修改。如果没有特别的指定,默认的,数据库将遵从主机操作系统时区设置,或者取自环境变量ORA_STDZ。所有支持的时区记录在V$TIMEZONE_NAMES动态性能表中。时区有三种表示方法,全名、缩写和相对于标准时间(格林威治时间)的固定偏移,比如标准时间相应的三种表示方法分别为:Etc/Greenwich、GMT和+00:00。

Oracle 9i 开始多了 3 个关于时间的数据类型:TIMESTAMP [(precision)] TIMESTAMP [(precision)] WITH TIME ZONE TIMESTAMP [(precision)] WITH LOCAL TIME ZONE,其中 TIMESTAMP [(precision)] WITH TIME ZONE 保存了时区信息。

1. Oracle 的时区设置

Oracle 的时区可以分为两种,一种是数据库的时区,一种是 session 时区,也就是客户端连接时的时区(经过实验,连接以后再修改客户端的时区,session 的时区不会更改)。

数据库的时区在创建数据库时可以通过在 create database 语句中加上 SET TIME_ZONE = ' { { + | - } hh : mi | time_zone_region } ' 来指定,如果,不指定,默认是按照数据库所在的操作系统时区来设定的。创建之后,可以通过 alter database 来修改。其中 time_zone_region 参数可以通过查询 V$TIMEZONE_NAMES 动态视图来获得所有支持的值。修改之后,需要重启数据库才能生效。经常有人会碰到无法修改的情况:

SQL> alter database set time_zone='+06:00';

alter database set time_zone='+06:00'

*

ERROR at line 1:

ORA-02231: missing or invalid option to ALTER DATABASE

TOM 对此问题有过解释,TIME_ZONE 的设定主要是为了 WITH LOCAL TIME ZONE,当 session 的时区和数据库的时区不同时,oracle 根据时区的差距转换到数据库的时间,再保存到数据库的 WITH LOCAL TIME ZONE 类型中,他是不保存时区的,所以需要 TIME_ZONE 来进行各种时区之间时间的转换(WITH TIME ZONE 类型保存了原始的时区,所以不需要 TIM

oracle时区参考表,ORACLE 时区相关推荐

  1. Oracle常用数据字典表 Oracle常用数据字典表 查看当前用户的缺省表空间

    Oracle常用数据字典表 Oracle常用数据字典表 查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; ...

  2. Oracle中预警表,Oracle DB 查看预警日志

    "Database(数据库)"主页>"Related Links相关链接)"区域> "Alert Log Content (预警日志内容) ...

  3. oracle+12c+大表,ORACLE 12C新特性-在线迁移表或分区 | 信春哥,系统稳,闭眼上线不回滚!...

    今天测试一下ORACLE 12C的一个新功能-在线移动表或分区,这其实在10g版本就已经支持了,难道是官方文档写错了,先不按照文档描述的去测试,看看是否堆表也可以在线迁移.以下是实验过程: 下面先看下 ...

  4. 清除oracle服务注册表,oracle卸载清除注册表(彻底卸载)

    用Oracle自带的卸载程序不能从根本上卸载Oracle,从而为下次的安装留下隐患,那么怎么才能完全卸载Oracle呢? 那就是直接注册表清除,步骤如下: . 开始->设置->控制面板-& ...

  5. oracle 删除中文表,oracle - 删除全局临时表 - SO中文参考 - www.soinside.com

    步骤1.确定要捕获的错误: 如果表不存在: SQL> drop table x; drop table x * ERROR at line 1: ORA-00942: table or view ...

  6. oracle 同步 部份表,Oracle 同步表数据外键处理

    ORA-02266: 表中的唯一/主键被启用的外键引用 方法一: 在删除有父子表关系的表的数据时,我们都知道要先删除子表 再 删除父表数据,或者先取消外键 然后再删除. 昨天采用先删子表 ,再删父表, ...

  7. oracle mysql 创建表,Oracle 创建表用户、空间

    oracle创建用户.表空间 无 /*查看表空间文件位置*/select *from dba_data_files;--创建arcgis 表空间.用户/*第1步:创建临时表空间 */create te ...

  8. oracle导出审计表,Oracle审计表AUD$处理方法

    Oracle版本:11.2.0,其他版本要测试DBMS_AUDIT_MGMT能否成功 1. 查询表,然后truncate select count(*) from aud$; truncate tab ...

  9. oracle 索引回表,oracle 索引简单总结

    建立索引时先进行排序,逻辑上分为Root(根块),Branch(茎块),leaf(叶子块).leaf中存在索引列的值.长度.和所在rowid,茎块存了指向具体茎块的指针,root块同理.这是逻辑上的划 ...

最新文章

  1. Python操作SQLite3
  2. 使用chrome下载m3u8视频
  3. git 裁切_图片居中裁切.html
  4. STM32系列--初识寄存器1
  5. 机器学习(一)梯度下降算法
  6. php java session共享_PHP实现session共享
  7. 2017.3.29 longge的问题 失败总结
  8. sdi线缆标准_影片创作与未来标准监看——监视器DP-V2421使用手记
  9. CCIE学习笔记 2---BGP选路(属性值)
  10. 如何导出立创EDA库到AD库 ?
  11. 如何通过搜索计算机共享打印机驱动程序,怎么解决连接共享打印机时“找不到驱动程序”...
  12. 5S管理卫生考评办法
  13. 教你玩转ACDSEE
  14. Java模拟ssh交互_java模拟ssh执行shell命令
  15. 【数学】嵌入式开发中涉及到的对数公式
  16. Autojs 3.0文档学习之设备信息
  17. 练习4闭合导线平差计算
  18. excel公式编辑器_只要2步,Excel就能拥有聚光灯效果,让你看清数据
  19. 减去百分之二是怎么用计算机算,百分比换算公式(常见的百分率计算公式)
  20. css3的animation动画属性实现闹钟左右摇摆

热门文章

  1. android 新浪微博的点赞功能实现,Android PraiseTextView实现朋友圈点赞功能
  2. c语言编程*字母图形,BIT网教c语言练习_编程复习1输出图形
  3. JavaScript 数组拼接打印_巧用控制台,提升JavaScript调试性能
  4. 2020-12-17 Latex代码公式中如何设定多个对齐点( Multiple aligning symbols )
  5. 客户端相关知识学习(四)之H5页面如何嵌套到APP中
  6. 《数据结构与算法分析—Java语言描述》pdf
  7. 在CDS(Core Data Services)中使用DCL(Data Control Language)
  8. ImportError: No module named setuptools
  9. .net获取地址栏中的url
  10. 不带参数的SQL语句执行方法