SYSTIMESTAMP语法图SYSTIMESTAMP函数返回数据库所在的操作系统设置的当前时间戳,其返回类型为TIMESTAMP,且与TIMESTAMP_FORMAT参数所指定格式一致。 如果一个SQL语句中出现了多个SYSTIMESTAMP函数,在该语句执行过程中将只调用一次函数,即保证多个SYSTIMESTAMP函数返回的是相同一个时间戳值。 示例SELECT SYSTIMESTAMP res1,SYSTIMESTAMP() res2,SYSTIMESTAMP(9) res3 FROM DUAL;RES1 如果一个SQL语句中出现了多个SYSTIMESTAMP函数,在该语句执行过程中将只调用一次函数,即保证多个SYSTIMESTAMP函数返回的是相同一个时间戳值。 示例SELECT SYSTIMESTAMP res1,SYSTIMESTAMP() res2,SYSTIMESTAMP(9) res3 FROM DUAL;RES1
查询:SYSDATE - 获取当前日期和时间:SELECT SYSDATE FROM dual;CURRENT_DATE - 获取当前日期:SELECT CURRENT_DATE FROM dual;SYSTIMESTAMP - 获取当前日期和时间及时区信息:SELECT SYSTIMESTAMP FROM dual;CURRENT_TIMESTAMP - 获取当前日期和时间及时区信息:SELECT CURRENT_TIMESTAMP FROM dual;可以看出SYSDATE 和 CURRENT_DATE 输出的值都是一样的SYSTIMESTAMP 和 CURRENT_TIMESTAMP 输出的值都是一样的SYSTIMESTAMP 获取时分秒,不能用CURRENT_DATE,只能用CURRENT_TIMESTAMPSELECT SYSTIMESTAMP, EXTRACT(HOUR FROM SYSTIMESTAMP), EXTRACT (minute from SYSTIMESTAMP), EXTRACT(second from SYSTIMESTAMP) FROM DUAL```ADD_MONTHS - 向日期添加指定月数:SELECT
示例SELECT SYSDATE,TIMESTAMP_TO_SCN(TO_CHAR(SYSDATE)) scn1,SYSTIMESTAMP,TIMESTAMP_TO_SCN(SYSTIMESTAMP) scn2 FROM DUAL;SYSDATE SCN1 SYSTIMESTAMP 示例SELECT SYSDATE,TIMESTAMP_TO_SCN(TO_CHAR(SYSDATE)) scn1,SYSTIMESTAMP,TIMESTAMP_TO_SCN(SYSTIMESTAMP) scn2 FROM DUAL;SYSDATE SCN1 SYSTIMESTAMP
into yhem select * from yhem; commit; Alter session set APPROX_FOR_COUNT_DISTINCT = false; select systimestamp from dual / select count(distinct(table_name)) from yhem / select systimestamp from dual / alter session set APPROX_FOR_COUNT_DISTINCT = true / select systimestamp from dual / select count(distinct(table_name )) from yhem / select systimestamp from dual / 动手试试看,也许还能有许多的其他发现。
SYSTIMESTAMP返回的UTC标准时间 SQL>SELECT EXTRACT(HOUR FROM SYSTIMESTAMP) A,EXTRACT(MINUTE FROM SYSTIMESTAMP) B,EXTRACT(SECOND FROM SYSTIMESTAMP) C FROM DUAL; A B C ——————– ———- 8 26 50.052 6 LAST_DAY 格式:LAST_DAY SYS_EXTRACT_UTC 格式:SYS_EXTRACT_UTC(datetime_wuth_timezone) 说明:返回UTC时间 举例: SQL>SELECT SYS_EXTRACT_UTC(SYSTIMESTAMP 格式:SYSDATE 说明:返回当前时间,数据库驻留的操作系统时间 举例: SQL>SELECT SYSDATE A FROM DUAL; A —————— 2014/6/2411:06:24 14 SYSTIMESTAMP 格式:SYSTIMESTAMP 说明:返回系统时间,包括时区信息,带微秒 举例: SQL>SELECT SYSTIMESTAMP A FROM DUAL; A ————————————————————
SQL> insert into test_timestmap_date values(sysdate, systimestamp); 1 row created. timestamp",右值优先级高,可以看到,左值使用了内部函数INTERVAL_FUNCTION,不会用到索引, SQL> select * from test_timestmap_date where c1=systimestamp ---------------------------- 1 - filter(SYS_EXTRACT_UTC(INTERNAL_FUNCTION("C1"))=SYS_EXTRACT_UTC(SYSTIMESTAMP 但实际执行,仍采用全表扫描, SQL> select * from test_timestmap_date where c2 = systimestamp; ... --------------- ---------------------------- 1 - filter(SYS_EXTRACT_UTC(INTERNAL_FUNCTION("C2"))=SYS_EXTRACT_UTC(SYSTIMESTAMP
SQL> select count(1) from t1 as of timestamp systimestamp - interval '5' minute; COUNT(1) --------- - 100 SQL> insert into t1 select * from t1 as of timestamp systimestamp - interval '5' minute --由于未启用row movement,闪回表会报错ORA-08189: SQL> flashback table t1 to timestamp systimestamp - interval '3' minute; flashback table t1 to timestamp systimestamp - interval '3' minute * ERROR at SQL> flashback table t1 to timestamp systimestamp - interval '3' minute; Flashback complete.
第一个场景的脚本如下: function test_conn { sqlplus -s ref_conn/oracle <<EOF set feedback off set time on col systimestamp format a35 select systimestamp,count(*)from test_online_ref; EOF } for i in {1..1000000} do test_conn done 剩下两个场景的脚本,套路都是类似的,通过频繁的DML或者查询来完成 比如查询 select systimestamp,count(*)from test_online_ref; 比如DML SYSTIMESTAMP COUNT(*) ----------------------------------- ---------- 18-SEP- 16 10.49.53.769959 PM +08:00 2923035 SYSTIMESTAMP COUNT(*) -------------
delete sales.branches1 where BRANCH_NO = '0405' and BRANCH_NAME ='贵州';commit; SQL> SQL> select systimestamp from dual; SYSTIMESTAMP----------------------------------------------------------------2024-05-11 14 insert into sales.branches1 values('0406','江西',4,'JiangXi',50);commit; SQL> select systimestamp from dual; SYSTIMESTAMP----------------------------------------------------------------2024-05-11 14:04:46.152775 from dual;SYSTIMESTAMP----------------------------------------------------------------2024-05-11 14:
当前日期时间的函数: 除非必要,不要使用SYSDATE和SYSTIMESTAMP,这个返回的是数据库所在操作系统的时间。 CURRENT_TIMESTAMP,返回的是TIMESTAMP WITH TIME ZONE类型 LOCALTIMESTAMP,返回的是TIMESTAMP类型 SYSDATE,返回的是DATE类型 SYSTIMESTAMP LOCALTIMESTAMP : 2018-09-18 10:27:23.926375 Test SYSDATE : 2018-09-18 02:27:23.0 Test SYSTIMESTAMP LOCALTIMESTAMP : 2018-09-18 04:27:45.482485 Test SYSDATE : 2018-09-18 02:27:45.0 Test SYSTIMESTAMP 而SYSDATE和SYSTIMESTAMP返回的则是数据库所在操作系统所在时区的时间。
DBMS_AUTO_INDEX.REPORT_ACTIVITY ( activity_start IN TIMESTAMP WITH TIME ZONE DEFAULT SYSTIMESTAMP SELECT DBMS_AUTO_INDEX.report_activity( activity_start => SYSTIMESTAMP-2, activity_end => SYSTIMESTAMP-1, type => 'HTML') FROM dual; -- 最新活动的HTML报告。 SELECT DBMS_AUTO_INDEX.report_activity( activity_start => SYSTIMESTAMP-2, activity_end => SYSTIMESTAMP-1, type => 'XML', section => 'ALL', "LEVEL
DBMS_OUTPUT.put_line (s); 7 8 INSERT INTO lock_test (action, when) 9 VALUES ('started', SYSTIMESTAMP DBMS_LOCK.sleep (5); 12 13 INSERT INTO lock_test (action, when) 14 VALUES ('ended', SYSTIMESTAMP DBMS_OUTPUT.put_line (s); 7 8 INSERT INTO lock_test (action, when) 9 VALUES ('started', SYSTIMESTAMP DBMS_LOCK.sleep (5); 12 13 INSERT INTO lock_test (action, when) 14 VALUES ('ended', SYSTIMESTAMP
ORCL_PERFSTAT_COLLECT_N1', program_name => 'PROC_RAC_STATSPACK', start_date => SYSTIMESTAMP PLSQL_BLOCK', job_action => 'begin STATSPACK.PURGE(31); end;', start_date => SYSTIMESTAMP ORCL_PERFSTAT_COLLECT_N2', program_name => 'PROC_RAC_STATSPACK', start_date => SYSTIMESTAMP PLSQL_BLOCK', job_action => 'begin STATSPACK.PURGE(31); end;', start_date => SYSTIMESTAMP
DBMS_AUTO_INDEX.REPORT_ACTIVITY ( activity_start IN TIMESTAMP WITH TIME ZONE DEFAULT SYSTIMESTAMP SELECT DBMS_AUTO_INDEX.report_activity( activity_start => SYSTIMESTAMP-2, activity_end => SYSTIMESTAMP-1, type => 'HTML') FROM dual; -- 最新活动的HTML报告。 SELECT DBMS_AUTO_INDEX.report_activity( activity_start => SYSTIMESTAMP-2, activity_end => SYSTIMESTAMP-1, type => 'XML', section => 'ALL', "LEVEL
TABLE_NAME ROW_MOVE ------------------------------ -------- TB_EMP DISABLED select current_scn,systimestamp from v$database; --获取系统当前的SCN CURRENT_SCN SYSTIMESTAMP ----------- ------------------------------- from v$database; --获取系统当前的SCN CURRENT_SCN SYSTIMESTAMP ----------- ------------------------------- from v$database; --获取系统当前的SCN CURRENT_SCN SYSTIMESTAMP ----------- ------------------------------- from v$database; --获取系统当前的SCN CURRENT_SCN SYSTIMESTAMP ----------- -------------------------------
dates,vara) values(i,sysdate,'test_aaaa'); rollback; insert into t_log(dates,vars) values(systimestamp when others then l_var:=substr(sqlerrm,1,1000); insert into t_log(dates,vars) values(systimestamp SELECT COUNT(1) INTO L_CNT from t_test_col where rownum=1; insert into t_log(dates,vars) values(systimestamp when others then l_var:=substr(sqlerrm,1,1000); insert into t_log(dates,vars) values(systimestamp
linesize 150 delete from sync_delay@sync_link; insert into sysbench_dba.sync_delay@sync_link select systimestamp from sysbench_dba.sync_delay@sync_link) select (select insert_time from pri_timestamp)pri_timestamp,systimestamp std_timestamp,(select insert_time from pri_timestamp)-systimestamp diff_timestamp from dual; EOF 运行这个脚本之后
dual; SQL> --查询当前时间,具体到时分秒 SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual SQL> --systimestamp 时间戳,更精确 SQL> select systimestamp from dual; SQL> --昨天 今天 明天 SQL> select (sysdate-1) 昨天, sysdate 今天, from dual; SYSTIMESTAMP ------- 2012-10-22 15:40:33 SQL> select to_char(systimestamp ,'yyyy-mm-dd hh24:mi:ss*ff') from dual; TO_CHAR(SYSTIMESTAMP,'YYYY-MM
--------------- ------------------------------ 2015-11-23 23:03:35 23-NOV-15 11.03.35.000000 PM 如果插入systimestamp SQL> insert into test values(systimestamp,systimestamp); 1 row created. SQL> alter table test modify(date2 default systimestamp); Table altered.
ora11g/test/test','output.txt','w'); UTL_FILE.PUTF (v_filehandle,'---export data from table data:', SYSTIMESTAMP utl_file.fopen('TEST','output.txt','w'); UTL_FILE.PUTF (v_filehandle,'---export data from table data:', SYSTIMESTAMP test/test','output.txt','w'); 5 UTL_FILE.PUTF (v_filehandle,'---export data from table data:', SYSTIMESTAMP