前段时间,发现一套新装载的Rac数据库所在操作系统时间不对,查询dbtimezone发现为-06:00,说明时区不对;
select dbtimezone from dual;
DBTIME
---------
-06:00
OK,先将rac停掉,再在一段启动数据库,更改time_zone参数:
alter database set time_zone='+08:00';
更改参数后,将数据库shutdown,再将Rac数据库启动起来;
接着分别运行以下SQL,查看时间是否校准:
select sysdate from dual;
select current_date from dual;
select current_timestamp from dual;
host date
select systimestamp from dual;
在sqlplus中发现时间一致,但是开发反应使用pl/sql查询的时候显示时间不一致。即sysdate,systimestamp很current_date,current_timestamp的时间不一致。
都知道sysdate,systimestamp取的是系统的时间,为什么sqlplus中查询的值是准确的值,而通过pl/sql连接查询的值就不是准确的?
为了定位是不是数据库的问题,在该操作系统上使用DBCA重新创建一个test DB,之后查看该test数据库,发现问题依旧,从此处可以大概估算下应该不是数据库的问题,是操作系统的问题。
在AIX操作系统下date看到操作系统时区为BEIST-8,由于是测试库,将操作系统时区改为CST(Asia/shanghai)之后,重启操作系统,使用pl/sql连接数据库,发现问题解决,所有时间均一致,且都在东八区。
- 大小: 32.8 KB
分享到:
相关推荐
1. 日期和字符转换函数用法(to_date,to_char) 代码如下:select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) as nowTime from dual; //日期转化为字符串 select to_char(sysdate,’yyyy’) as nowYear from ...
1. 日期和字符转换函数用法(to_date,to_char) select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual; //日期转化为字符串 select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间...
Oracle中的时间是Date型,以下函数提供了两种时间转换的Oracle函数 --unix时间戳与date时间互转 SELECT oracle_to_unix(SYSDATE),unix_to_oracle(1551774286),oracle_to_unix(SYSDATE) FROM dual;
根据系统时间获取上周一时间并转化为number create or replace function getUpMonday return number is Result number; begin declare cursor MyCursor is select to_number(to_date(to_char(d.surmon,'yyyy-...
加法 select sysdate,add_months(sysdate,12) from dual; –加1年 select sysdate,add_months(sysdate,1) from dual; –加1月 select sysdate,to_char(sysdate+7,’yyyy-mm-dd HH24:MI:SS’) from dual; –加1星期 ...
add_months (sysdate,2):就是当前日期的两个月之后的时间。 如:表示2个月以后的时间: SQL> select add_months(sysdate,2) from dual; ADD_MONTHS(SYSDATE,+2) ---------------------- 2012-5-16 下午 02:30:...
Oracle和mysql的一些简单命令对比 1) SQL> select to_char(sysdate,’yyyy-mm-dd’) from dual; SQL> select to_char(sysdate,’hh24-mi-ss’) from dual; mysql> select date_format(now(),’%Y-%m-%d’); mysql> ...
oracle日期格式和java日期格式区别 HH24:mm:ss和HH24:mi:ss的区别 1.java 1)分钟用mm表示 24小时制: java(区分大小写):yyyy-MM-dd HH:mm:ss 12小时制: java(区分大小写):yyyy-MM-dd hh:mm:ss 2)...
1》以12小时制显示 SQL>select to_char(sysdate,’YYYY-MM-DD HH12:MI:SS AM’)from dual; TO_CHAR(SYSDATE,’YYYY-MM-DDHH1 —————————— 2007-06-29 02:50:06 下午 ...3》得到当前时间的前
and t.create_time<=last_day(SYSDATE) create_time为你要查询的时间 当年数据 select * from table t where t.create_time >=trunc(sysdate,'YYYY') and t.create_time<=add_months(trunc(sysdate,'YYYY'),12)-...
oracle中TIMESTAMP与DATE比较
原因是SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟。 select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; 二、另要以24小时的形式显示出来要用HH24...
select * from 日程安排 where datediff('minute',f开始时间,getdate())>5 说明:两张关联表,删除主表中已经在副表中没有的信息 delete from info where not exists ( select * from infobz where info.infid=...
这种习惯的写法 to_char(sysdate, 'yyyyMMdd hh24:mm:ss') 中的 m ,有点傻,oracle分不清是月份 m, 还是分钟 m,所以分钟中的m 他取的月份,造成比较诡异的时间。。。 正常的写法是把分钟用 mi 表示(min分钟的...
获取系统当前时间 date类型的 select sysdate from dual; char类型的 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; select to_char(sysdate, 'yyyy' ) from dual; --年 select to_char...
begin — Test statements here v_date1 := SYSDATE; v_date2 := to_date( ‘2008-09-08’); IF v_date1 > v_date2 THEN dbms_output.put_line( ‘if’); ELSE dbms_output.put_line( ‘else’); END IF; end
10.1.1 SYSDATE、CURRENTDA_DATE及SYSllMESTAMP 10.1.2 两个日期的差 10.1.3 添加月份 10.1.4 减少月份 10.1.5 GRE,ATEST和LEAST 10.1.6 NEXT-DAY 10.1.7 LAST-DAY 10.1.8 MOMTHS-BETWEEN 10.1.9 组合日期函数 10.2...
10.1.1 SYSDATE、CURRENTDA_DATE及SYSllMESTAMP 10.1.2 两个日期的差 10.1.3 添加月份 10.1.4 减少月份 10.1.5 GRE,ATEST和LEAST 10.1.6 NEXT-DAY 10.1.7 LAST-DAY 10.1.8 MOMTHS-BETWEEN 10.1.9 组合日期函数 10.2...
select TO_NUMBER(TO_CHAR(sysdate, 'DD')) from dual; --本月天数 select sysdate- TRUNC(sysdate, 'Q') + 1 from dual; --本季天数 select TO_NUMBER(TO_CHAR(sysdate, 'DDD')) from dual; --本年天数
to_date(to_char(sysdate,’yyyy-mm-dd’) || ‘ 00:00:01′,’yyyy-mm-dd hh24:mi:ss’) and to_date(to_char(sysdate,’yyyy-mm-dd’) || ‘ 23:59:59′,’yyyy-mm-dd hh24:mi:ss’); Oracle 字段类型为varchar2...