首先确认会话时区是否正确,会话时区可能和数据库时区不一致
为海南等地区用户提供了全套网页设计制作服务,及海南网站建设行业解决方案。主营业务为网站设计制作、成都做网站、海南网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
SQL SELECT SESSIONTIMEZONE FROM DUAL;
SESSIONTIMEZONE
---------------------------------------------------------------------------
+08:00
会话时区是北京时区
SQL SELECT DBTIMEZONE FROM DUAL;
DBTIME
------
+00:00
DB是世界时区
SQL SELECT TZ_OFFSET(SESSIONTIMEZONE), TZ_OFFSET(DBTIMEZONE) FROM DUAL;
TZ_OFFS TZ_OFFS
------- -------
+08:00 +00:00
1.检查数据库是否有这样的字段类型 TIMESTAMP WITH LOCAL TIME ZONE
SQLselect c.owner || '.' || c.table_name || '(' || c.column_name || ') -'
|| c.data_type || ' ' col
from dba_tab_cols c, dba_objects o
where c.data_type like '%WITH LOCAL TIME ZONE'
and c.owner=o.owner
and c.table_name = o.object_name
and o.object_type = 'TABLE'
order by col
/
SQLselect u.name || '.' || o.name || '.' || c.name TSLTZcolumn
from sys.obj$ o, sys.col$ c, sys.user$ u
where c.type# = 231
and o.obj# = c.obj#
and u.user# = o.owner#;
2.检查当前数据库时区
SQL select * from database_properties where property_name='DBTIMEZONE';
行将被截断
PROPERTY_NAME PROPERTY_VALUE
------------------------------ -------------------------------------------------
DBTIMEZONE 00:00
3.改变数据库时区
SQL ALTER DATABASE SET TIME_ZONE = '+8:00';
数据库已更改。
SQL shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL startup
ORACLE 例程已经启动。
Total System Global Area 272629760 bytes
Fixed Size 1248528 bytes
Variable Size 92275440 bytes
Database Buffers 171966464 bytes
Redo Buffers 7139328 bytes
数据库装载完毕。
数据库已经打开。
SQL select dbtimezone from dual;
DBTIME
------
+08:00
4.检查时间
SQL select to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss') from dual
SQL SELECT SYSTIMESTAMP FROM dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
23-7月 -09 11.50.25.750000 上午 +08:00
对于大多数数据库,这些值都是-07:00之类的偏移值
因此对于NEW_TIME函数是没有用的。Oracle9i有关NEW_TIME的文档建议使用FROM_TZ来替代,但是这可能会产生误导。FROM_TZ只将一个时区应用到一个时间戳上;它并不能把一个时区转换成另外一个时区。
oracle的服务器时间,是由服务器的系统时间控制的,所以要看服务器的具体类型,以windows 10和linux系统为例分别说明。
工具:windows 10、linux
windows 10操作步骤:
1、右键开始菜单,选择控制面板。
2、找到日期和时间,点击进入。
3、点击更改日期和时间。
4、进入后,修改日期时间,保存即可。
linux下更改方法:
1、以root用户登录到指定服务器。
2、执行命令
date -s '2017-07-11 23:58:00'
这是将系统时间修改为2017年7月11日23点58分00秒。
3、修改后,reboot重启系统即可。
时间戳的概念:它是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
下图是从linux系统中获得当前时间戳的一种方式
在oracle使用时间戳,一般都是为了方便计算时间差的,我们要知道oracle中的date类型想减是不能友好的得到时间的差值的。所以使用时间戳来得到两个时间差。
首先来看oracle中如何获得当前时间的时间戳,我们用当前时间减去计算机元年后再经过换算得到了的从1970年来到当前时间的时间戳,单位是微妙。
另外oracle提供了另一种便捷得到两个时间差的方式,那就是使用timestamp数据类型,它类似date类型,但是存储的时间更为精确,显示的格式:yyyy-mm-dd hh24:mi:ss.ff AM,其中ff是小数秒。
timestamp类型的时间差可读性也比上面那种好一些,可以直观看出两个时间差。
在oracle中,两个date类型的数值想减也可以转换成上述的timestamp可以的类型,这里就要介绍一个函数:numtodsinterval(n,'x'),它能将一个数值转换成timestamp那种格式的数据。但要注意:后面的参数'x'是取'day'、'minute'、'hour'完全取决于前面的单位,这样才能获得正确的时间差
最后我们介绍一个函数extract,该函数可以从timestamp类型的时间里抽取想要hour,minute等
您可以通过修改AWS参数组的参数:time_zone修改MySQL的时区。关于如何修改亚马逊AWS参数:AWS参数是动态的,所以修改后立即生效。
对于已经建立的连接,不生效;对于新建立的连接才生效。
如果您创建了只读副本,您可以为主库和读从库设置不同的时区。
如果是从快照恢复数据库,时区将会被设置成UTC
如果是恢复到时间点,时区将会保持和原库一致
看MOS文档 How To Change Timezone for 11gR2 Grid Infrastructure (文档 ID 1209444.1)
AIX改时区必须重启。
我是全部节点停止, stop crs,然后 disable crs 让crs不自动启动 , 然后改AIX的时区,重启,时区生效,改grid时区,然后start crs 。
要改$GRID_HOME/crs/install/s_crsconfig_nodename_env.txt。
改时区没有什么大问题,数据库本身并不依赖时区,建议看看 Timestamps time zones - Frequently Asked Questions (文档 ID 340512.1)
吐槽一下,经常有人安装AIX的时候不注意选时区选择到 BST(Bering) 以为是BEIST(Beijing)。
新闻标题:怎么改Oracle的时区,oracle时间修改
标题链接:https://www.cdcxhl.com/article24/hdgice.html
成都网站建设公司_创新互联,为您提供微信小程序、企业建站、网站改版、网站营销、小程序开发、微信公众号
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联