时区和时间字段oracle 11g

时间:2016-08-19 14:49:03

标签: oracle oracle11g timezone

根据this question和相应的答案我做了下一个表格:

enter image description here

然后我有下一个问题:

  1. 数据库时间在这方面的作用是什么?
  2. 有一种获取数据库操作系统时区的方法吗?

1 个答案:

答案 0 :(得分:2)

  

有一种获取数据库操作系统时区的方法吗?

是的,你可以做到

SELECT TO_CHAR(SYSTIMESTAMP, 'TZR') FROM dual;
or
SELECT EXTRACT(TIMEZONE_REGION FROM SYSTIMESTAMP) FROM dual;
  

数据库时间在这方面的作用是什么?

实际上这与日常使用无关,它仅用于TIMESTAMP WITH LOCAL TIME ZONE数据类型列并定义存储格式。

按照以下类比来理解DBTIMEZONETIMESTAMP WITH LOCAL TIME ZONE:每当您必须使用时区时,常见的方法是以UTC格式存储所有次并将时间转换为应用层根据当前用户设置。

这正是TIMESTAMP WITH LOCAL TIME ZONE的工作方式,但在SQL级别上。唯一的区别是:Oracle不会将TIMESTAMP WITH LOCAL TIME ZONE次存储在 UTC 时间,而是存储在 DBTIMEZONE 时间。因此,如果数据库包含一个带有DBTIMEZONE列的表并且该列包含数据,则无法更改数据库上的TIMESTAMP WITH LOCAL TIME ZONE