该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Oracle中表示时间有DATE和TIMESTAMP,DATE可以存储年,月,日,小时,分钟,秒.
TIMESTAMP是DATE的扩展,可以存储年,月,日,小时,分钟,秒,同时还可以存储秒的小数部分.秒的小数部分可以为9位即纳秒,默认为6为的微秒.
表示时间差的为INTERVAL:INTERVAL YEAR TO MONTH 和INTERVAL DAY TO SECOND两种.
1,Date类型:sysdate和current_date
1. 日期格式参数含义说明
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 年中的第几个星期
从日期到字符串操作:to_char(日期,日期格式参数).
例:
select sysdate,to_char(sysdate,'DD/MM/YYYY HH24:MI:SS') from dual
select sysdate,to_char(sysdate,'DD/MM/YYYY HH:MI:SS') from dual
select sysdate,to_char(sysdate,'DD/MON/YYYY') from dual
select sysdate,to_char(sysdate,'DDD') from dual
从字符串到日期转换:to_date(字符串,日期格式参数).日期格式参数的组合要比to_char少.
例:
select to_date('2010/07/16 21:15:37','yyyy/mm/dd hh24:mi:ss') from dual
select to_date('198','DDD') from dual
两个日期相减得到的是一个以天为单位的number,带小数.
天:
ROUND(TO_NUMBER(DATE1 - DATE2))
小时:
ROUND(TO_NUMBER(DATE1 - DATE2) * 24)
分钟:
ROUND(TO_NUMBER(DATE1 - DATE2) * 24 * 60)
秒:
ROUND(TO_NUMBER(DATE1 - DATE2) * 24 * 60 * 60)
毫秒:
ROUND(TO_NUMBER(DATE1 - DATE2) * 24 * 60 * 60 * 1000)
日期和INTERVAL的操作:加减操作.
当前时间减去 7 分钟的时间
select sysdate,sysdate - interval '7' MINUTE from dual
当前时间加 7 小时的时间
select sysdate + interval '7' hour from dual
当前时间减去 7 天的时间
select sysdate - interval '7' day from dual
当前时间减去 7 月的时间
select sysdate,sysdate - interval '7' month from dual
当前时间减去 7 年的时间
select sysdate,sysdate - interval '7' year from dual
时间间隔乘以一个数字
select sysdate,sysdate - 8 *interval '2' hour from dual
2,TIMESTAMP类型:systimestamp和CURRENT_TIMESTAMP.
FF [1..9]小数秒.
从字符串到时间戳操作:to_timestamp(字符串,日期格式参数).
select to_timestamp('2010/07/16 21:15:37','yyyy/mm/dd hh24:mi:ss') from dual
select to_timestamp('2010/07/16 21:15:37.123456','yyyy/mm/dd hh24:mi:ss.ff') from dual
select to_timestamp('2010/07/16 21:15:37.123456789','yyyy/mm/dd hh24:mi:ss.ff9') from dual
从时间戳到字符串操作:to_char(时间戳,日期格式参数).
select to_char(systimestamp,'yyyy/mm/dd hh24:mi:ss') from dual
select to_char(systimestamp,'yyyy/mm/dd hh24:mi:ss.ff7') from dual
select to_char(systimestamp,'DDD') from dual
将date转为timestamp,转后的的timestamp的小数秒为0:
select systimestamp ,CAST (sysdate AS timestamp) from dual