SELECT SYSTIMESTAMP FROM DUAL;查询出来的结果是默认的,timestamp默认精确到秒后6位
2016/12/31 10:49:51.263720 +08:00
SELECT SYSTIMESTAMP+0 FROM DUAL;查询处理的结果当天,默认为sysdate
2016/12/31 10:49:51
SELECT SYSTIMESTAMP+1 FROM DUAL;查询处理的结果当天,默认为sysdate+1
2017/1/1 10:49:51
select last_day(sysdate) from dual;返回当月最后一天
TO_CHAR函数将日期转为字符
TO_CHAR(date,’格式’);
select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;//mi是分钟
select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual;//mm字段的结果显示为月,而不是显示为分钟
select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年
select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的月
select to_char(sysdate,'dd') as nowDay from dual; //获取时间的日
select to_char(sysdate,'hh24') as nowHour from dual; //获取时间的时
select to_char(sysdate,'mi') as nowMinute from dual; //获取时间的分
select to_char(sysdate,'ss') as nowSecond from dual; //获取时间的秒
select to_char(sysdate) s1, --返回当前日期,无时分秒
to_char(sysdate,'yyyy-mm-dd') s2, --返回当前日期,无时分秒
to_char(sysdate,'yyyy') s3, --返回当前年份
to_char(sysdate,'yyyy-mm-dd hh12:mi:ss') s4, --返回当前日期时间
to_char(sysdate, 'hh24:mi:ss') s5, --返回当前24小时制时间
to_char(sysdate,'DAY') s6 --返回当前星期
from dual;
select sysdate S1,
trunc(sysdate) S2, --返回当前日期,无时分秒
trunc(sysdate,'year') YEAR, --返回当前年的1月1日,无时分秒
trunc(sysdate,'month') MONTH , --返回当前月的1日,无时分秒
trunc(sysdate,'day') DAY --返回当前星期的星期天,无时分秒
from dual
TO_DATE函数将字符转换为日期
TO_DATE(char[, '格式'])
SELECT TO_DATE('2006-05-01 19:25:34', 'YYYY-MM-DD HH24:MI:SS') FROM DUAL
SELECT TO_DATE('2006-05-01 19:25', 'YYYY-MM-DD HH24:MI') FROM DUAL
SELECT TO_DATE('2006-05-01 19', 'YYYY-MM-DD HH24') FROM DUAL
SELECT TO_DATE('2006-05-01', 'YYYY-MM-DD') FROM DUAL
SELECT TO_DATE('2006-05', 'YYYY-MM') FROM DUAL
SELECT TO_DATE('2006', 'YYYY') FROM DUAL
select to_date(substr('2016-07-22 08:31:26.672',1,19),'yyyy-mm-dd hh24:mi:ss') from dual
2016/7/22 8:31:26
to_timestamp函数将字符转换为日期
to_timestamp(char[, '格式'])
select to_timestamp('2016-07-22 08:31:26.672','yyyy-mm-dd hh24:mi:ss.ff3') from dual
2016/7/22 8:31:26.672000000
当前时间+1天的方法有四种如下
select sysdate,sysdate+1 as res from dual;
SELECT SYSTIMESTAMP,SYSTIMESTAMP+1 FROM DUAL;
select sysdate,sysdate+numtodsinterval(1,'day') as res from dual;
select systimestamp,systimestamp+numtodsinterval(1,'day') as res from dual;
当前时间+1年的方法如下
select sysdate,sysdate+numtoyminterval(1,'year') as res from dual;
numtodsinterval(,) ,x是一个数字,c是一个字符串,c只能是'DAY'、'HOUR'、'MINUTE'、'SECOND'
numtoyminterval(,) ,x是一个数字,c是一个字符串,c只能是'YEAR'、'MONTH'
遇到分区表可以直接如下操作如下
分区字段的属性TIMESTAMP(3)或date,可以如下
alter table XX add PARTITION p01 VALUES LESS THAN (timestamp '2016-08-01 00:00:00.000')
分区字段的属性date,可以如下
alter table XX add PARTITION p01 VALUES LESS THAN (to_date('2003-1-1','yyyy-mm-dd'))
分区字段的属性varchar2(20),可以如下
alter table XX add PARTITION p01 VALUES LESS THAN (to_date('2004-1-1','yyyy-mm-dd'))
分区表自动分区,按每周自动分区
alter table tablename set INTERVAL(numtodsinterval(7,'day'));
job里面下一个工作的17点运行job的设置,不能直接SYSDATE+17/24,SYSDATE+17/24表示每17个小时运行一次
interval=>'TRUNC(SYSDATE+1)+17/24'
dbms_utility.get_time精确到毫秒
获取前一个操作和后一个操作耗时多少秒
create or replace procedure time_to_s_test as
v_i int;
v_j int;
begin
select dbms_utility.get_time into v_i from dual;
dbms_lock.sleep(5);
select dbms_utility.get_time into v_j from dual;
dbms_output.put_line('开始='||v_i||' 结束='||v_j||' 时间差='||to_char(v_j-v_i)/100);
end;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30126024/viewspace-2131724/
,如需转载,请注明出处,否则将追究法律责任。