timestamp 日期类型 秒 后面还有9位,默认6位,通过ff6,ff7,ff8,ff9,或者ff默认6
select to_char(systimestamp, 'yyyymmdd hh24:mi:ssxff6'),
to_char(systimestamp, 'yyyymmdd hh24:mi:ss.ff6') from dual;
timestamp转成date
select cast(to_timestamp('2011-09-14 12:52:42.123456789', 'syyyy-mm-dd hh24:mi:ss.ff') as date) timestamp_to_date from dual;
date型转成timestamp
select cast(sysdate as timestamp) date_to_timestamp from dual;
两个日期区间毫秒数(两date的日期相减得出的是天数)
select TO_NUMBER((to_date('2020-4-29 10:10:10','yyyy-mm-dd hh24:mi:ss')
-to_date('2020-4-29 10:20:10','yyyy-mm-dd hh24:mi:ss'))*24*60*60*1000) from dual;
两timestamp的日期相减得出的是完整的年月日时分秒小数秒
select sysdate-sysdate,systimestamp-systimestamp from dual;
select extract(day from inter) * 24 * 60 * 60 +
extract(hour from inter) * 60 * 60 + extract(minute from inter) * 60 +
extract(second from inter) "seconds" from
(
select to_timestamp('2011-09-14 12:34:23.281000000', 'yyyy-mm-dd hh24:mi:ss.ff') -
to_timestamp('2011-09-14 12:34:22.984000000', 'yyyy-mm-dd hh24:mi:ss.ff') inter from dual
);
select to_char(sysdate,'Y') from dual;--年
select to_char(sysdate,'Q') from dual;--季
select to_char(sysdate,'MM') from dual;--第几个月
select to_char(sysdate,'WW') from dual;--当年第几周,1.8是第二周
select to_char(sysdate,'W') from dual;--当月第几周,第八天是第二周
select to_char(sysdate,'IW') from dual;--当月第几周,新年第一天是第一周,下一个星期一是第二周
select to_char(to_date('20191231','yyyyMMdd'),'IW') from dual; --最后一天的周别是 1
select to_char(sysdate,'D') from dual;--当周第几天,星期日第一天
select to_char(sysdate,'DAY') from dual;--当周星期几
select to_char(sysdate,'DD') from dual;--当月几号
IW是ISO标准周,它的含义是ISO标准周以周别为“主线”,每年最多可以有53个周别,但是每年至少要包含52个周别;如果一年当中第52周别之后至当年的12月31日之间,还有大于或等于4天的话,则定为当年的第53周,否则剩余这些天数被归为下一年的第1周;如果在不足52周别的话,则以下一年的时间来补;每周固定的从周一开始作为本周的第1天,到周日作为本周的第7天;比如:在Oracle中 2012年01月01号依然属于IW周别2011年的第52周的第7天。这个用到的比较多。
select last_day(to_date('20200511','yyyyMMdd')) from dual;--当月最后一天
select add_months(to_date('20200511','yyyyMMdd'),1) from dual; --加一个月
select to_date('20200511030211','yyyyMMdd HH24miss')+1 from dual; --加一天
针对日期
--获取当周 周一日期
select trunc(to_date('20200107','yyyyMMdd'),'IW') from dual;
--获取当月第一天日期
select trunc(to_date('20200107','yyyyMMdd'),'MM') from dual;
--获取当年第一天日期
select trunc(to_date('20200107','yyyyMMdd'),'yyyy') from dual;
针对数字 ----不四舍五入
select trunc(123.458) from dual; --123
select trunc(123.458,0) from dual; --123
select trunc(123.458,1) from dual; --123.4
select trunc(123.458,-1) from dual; --120
select trunc(123.458,-4) from dual; --0
select trunc(123.458,4) from dual; --123.458
select trunc(123) from dual; --123
select trunc(123,1) from dual; --123
select trunc(123,-1) from dual; --120