首页 > 代码库 > Oracle的FIXED_DATE参数
Oracle的FIXED_DATE参数
我们知道,在Oracle数据库中正常执行 select sysdate from dual 都可以返回当前主机的系统时间。
正常修改系统时间,对应的查询结果也会变成修改后的系统时间。
现在遇到一个问题:测试系统修改了主机系统时间,数据库查询 select sysdate from dual 返回的时间和所在系统的主机时间相差很大,进一步排查发现返回的时间是固定不变的。
最终发现是Oracle有参数可以使得sysdate一直返回固定的时间,供某些测试场景使用。该库也是因为有其他测试人员设置了该参数,而其他测试人员不知道,产生了疑惑。
官方对这个参数的描述如下:
FIXED_DATE enables you to set a constant date that SYSDATE will always return instead of the current date. To undo a fixed date setting, specify FIXED_DATE=NONE. This parameter is useful primarily for testing. The value can be in the format shown above or in the default Oracle date format, without a time.
简单试验验证下,的确如此:
--1. 设定会话时间显示格式: SQL> alter session set nls_date_format=‘yyyy-mm-dd hh24:mi:ss‘; Session altered. --2. 查询sysdate值,是正常返回数据库所在主机的系统时间: SQL> SQL> select sysdate from dual; SYSDATE ------------------- 2017-03-31 10:16:10 SQL> / SYSDATE ------------------- 2017-03-31 10:16:18 --3. 设置fixed_date参数为固定一个值: SQL> alter system set fixed_date = ‘2017-04-01 12:00:00‘; System altered. --4. 再次查询发现sysdate时间为设置的值,且固定不变: SQL> select sysdate from dual; SYSDATE ------------------- 2017-04-01 12:00:00 SQL> / SYSDATE ------------------- 2017-04-01 12:00:00 --5. 设置fixed_date参数为none,使sysdate正常显示所在主机的系统时间: SQL> alter system set fixed_date = none; System altered. SQL> select sysdate from dual; SYSDATE ------------------- 2017-03-31 10:20:11 SQL> / SYSDATE ------------------- 2017-03-31 10:20:14 SQL>
Oracle的FIXED_DATE参数
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。