对于大多数数据库,这些值都是-07:00之类的偏移值
创新互联公司专业为企业提供包河网站建设、包河做网站、包河网站设计、包河网站制作等企业网站建设、网页设计与制作、包河企业网站模板建站服务,10多年包河做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
因此对于NEW_TIME函数是没有用的。Oracle9i有关NEW_TIME的文档建议使用FROM_TZ来替代,但是这可能会产生误导。FROM_TZ只将一个时区应用到一个时间戳上;它并不能把一个时区转换成另外一个时区。
时间戳的概念:它是一种时间表示方式,定义为从格林威治时间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等
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重启系统即可。
看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)。