我想用JOB执行一个存储过程循环向一个表插入当前时间,但在实际操作中发现,用JOB执行时,插入的时间就不对了,单独执行插入语句,时间就是正确的,很困惑,希望高手解答。创建表
create table test (edata char(20));创建存储过程
create or replace procedure insert_test as
begin
insert into test values(to_char(current_date,'DD-MM-YYYY hh24:mi:ss'));
commit;
end insert_test;创建作业,10秒一次
declare
job number;
begin
dbms_job.submit(job,'insert_test;',sysdate,'sysdate+10/(24*60*60)');
end;实际结果
select * from test;
21-01-2013 14:31:24 //直接执行插入
21-01-2013 14:31:27
21-01-2013 14:32:40
21-01-2013 06:36:05 //用JOB执行的插入
21-01-2013 06:36:10
21-01-2013 06:36:15
21-01-2013 06:36:20
21-01-2013 06:36:25 用JOB执行的插入时间少了8个小时,有高手知道原因吗?谢谢啦
create table test (edata char(20));创建存储过程
create or replace procedure insert_test as
begin
insert into test values(to_char(current_date,'DD-MM-YYYY hh24:mi:ss'));
commit;
end insert_test;创建作业,10秒一次
declare
job number;
begin
dbms_job.submit(job,'insert_test;',sysdate,'sysdate+10/(24*60*60)');
end;实际结果
select * from test;
21-01-2013 14:31:24 //直接执行插入
21-01-2013 14:31:27
21-01-2013 14:32:40
21-01-2013 06:36:05 //用JOB执行的插入
21-01-2013 06:36:10
21-01-2013 06:36:15
21-01-2013 06:36:20
21-01-2013 06:36:25 用JOB执行的插入时间少了8个小时,有高手知道原因吗?谢谢啦
一个 sysdate 系统时间
select current_date from dual;
select sysdate from dual 这两个查询结果相同么你的
SYSDATE 系统时间
CURRENT_DATE 会话时间
SYSDATE函数返回服务器的当前日期和时间,而CURRENT_DATE函数返回当前会话时中的当前日期和时间
一般情况下,二者相同。但如果修改了当前会话的时区,则会不同。
Sql代码
SQL> SELECT SESSIONTIMEZONE FROM DUAL;
SESSIONTIMEZONE
------------------------------
+08:00
SQL> SELECT SYSDATE,CURRENT_DATE FROM DUAL;
SYSDATE CURRENT_DATE
----------------- -----------------
20060211 20:04:51 20060211 20:04:51
SQL> ALTER SESSION SET TIME_ZONE='+09:00';
会话已更改。
SQL> SELECT SYSDATE,CURRENT_DATE FROM DUAL;
SYSDATE CURRENT_DATE
----------------- -----------------
20060211 20:05:00 20060211 21:05:00