一. dbms_lock.sleep
执行ORACLE_HOME/rdbms/admin/dbmslock.sql来创建dbms_lock;
在dba身份下grant execute on dbms_lock to username;
测试代码
a.
BEGIN
DBMS_OUTPUT.put_line(TO_CHAR(SYSDATE,'yyyymmddhh24miss'));
dbms_lock.sleep(10);
dbms_output.put_line(TO_CHAR(SYSDATE,'yyyymmddhh24miss'));
END;
b.
CREATE TABLE t(ID NUMBER,dat VARCHAR2(32));
DECLARE
BEGIN
FOR I IN 1 .. 10 LOOP
INSERT INTO T VALUES (I, TO_CHAR(SYSDATE, 'yyyymmddhh24miss'));
COMMIT;
DBMS_LOCK.SLEEP(5);
END LOOP;
END;
二.日期格式
--a.因为sql中不区分大小写,mm被认为和MM一样,所以在格式转化张用mi代替mm来显示分钟
SELECT to_char(SYSDATE,'YYYY-MM-DD HH24:mi:SS') FROM DUAL;
--b.对日期的加减操作
SELECT SYSDATE-INTERVAL '7' hour FROM dual; --year,month,day,hour,minute
SELECT SYSDATE-3*INTERVAL '8' HOUR FROM dual;
--c.日期到字符
SELECT to_char(SYSDATE,'YYYYDDD HH24:MI:SS') FROM DUAL;
SELECT TO_CHAR(SYSDATE,'YYYY DAY') FROM DUAL;
SELECT to_char(SYSDATE,'IW-D') FROM DUAL;
日期格式参数含义说明
D 一周中的星期几
DAY 天的名字,使用空格填充到9个字符
DD 月中的第几天
DDD 年中的第几天
DY 天的简写名
IW ISO标准的年中的第几周
IYYY ISO标准的四位年份
YYYY 四位年份
YYY,YY,Y 年份的最后三位,两位,一位
HH 小时,按12小时计
HH24 小时,按24小时计
MI 分
SS 秒
MM 月
Mon 月份的简写
Month 月份的全名
W 该月的第几个星期
WW 年中的第几个星期
--d.日期截取
SELECT TRUNC(SYSDATE,'YEAR') FROM DUAL;
SELECT TRUNC(SYSDATE) FROM DUAL;
SELECT TRUNC(SYSDATE,'YYYY') FROM DUAL;
SELECT TO_CHAR(CURRENT_TIMESTAMP(5),'yyyymmdd hh24:mi:ssxFF') FROM dual;
SELECT TO_CHAR(CURRENT_TIMESTAMP(9),'yyyy-month-day hh24:mi:ssxFF') FROM dual;
SELECTdbms_utility.get_time FROM dual;
测试代码
--记录程序运行时间 DBMS_UTILITY.GET_TIME
DECLARE
BEGIN_TIME NUMBER DEFAULTDBMS_UTILITY.GET_TIME;
END_TIME NUMBER;
BEGIN
FOR I IN 1 .. 10 LOOP
INSERT INTO T VALUES (I, SYSDATE);
DBMS_LOCK.SLEEP(1);
END LOOP;
END_TIME :=DBMS_UTILITY.GET_TIME;
DBMS_OUTPUT.PUT_LINE('开始时间:' || BEGIN_TIME || ';结束时间:' || END_TIME ||
';时间差(s):' || (END_TIME - BEGIN_TIME) / 100 || ';');
END;