Oracle日期格式转换
日期转字符串
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')as nowTime from dual; --日期转字符串 select to_char(sysdate,'yyyy')as nowYear from dual; --获取时间年 select to_char(sysdate,'mm')as nowYear from dual; --获取时间月 select to_char(sysdate,'dd')as nowYear from dual; --获取时间日 select to_char(sysdate,'hh24')as nowYear from dual; --获取时间时 select to_char(sysdate,'mi')as nowYear from dual; --获取时间分 select to_char(sysdate,'ss')as nowYear from dual; --获取时间秒
字符串转日期
select to_date('2017-08-08 10:00:00','yyyy-mm-dd hh24:mi:ss')as tTime from dual; select to_date('20170808105000','yyyy-mm-dd hh24:mi:ss')as tTime from dual;
查询是星期几
select to_char(sysdate,'d') from dual; --当周第几天
select to_char(sysdate,'day') from dual; --当前星期几 select to_char(to_date('20170808','yyyy-mm-dd'),'day') from dual; --指定日期星期几 select to_char(to_date('20170808','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; --设置日期语言
计算两个日期间天数
--方法1 select floor((sysdate - to_date('2017-08-01 08:00:00', 'yyyy-mm-dd hh24:mi:ss'))) as sDays from dual; --ceil(n) 取大于等于数值n的最小整数; --floor(n)取小于等于数值n的最大整数; select ceil(9.6) from dual; --->10 select floor(9.6) from dual; --->9 --方法2 select ROUND(TO_NUMBER(sysdate - to_date('2017-08-01 08:00:00', 'yyyy-mm-dd hh24:mi:ss'))) as sDays from dual;
一年的第几天
select to_char(sysdate,'ddd'),sysdate from dual;
next_day函数
select next_day(sysdate,6) from dual; --是从当前开始下一个星期五。后面的数字是从星期日开始算起。 -- 1 2 3 4 5 6 7 --日 一 二 三 四 五 六
查找上个月和当前月第一天和最后一天
select trunc(trunc(sysdate, 'month') - 1, 'month') as FirstDay_LastMonth, trunc(sysdate, 'month') - 1 as LastDay_LastMonth, trunc(sysdate, 'month') as FirstDay_CurMonth, last_day(trunc(sysdate, 'Month')) as LastDay_CurMonth from dual;
判断今年是否闰年
select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','闰年','平年') from dual;
获取当前季度
select to_char(sysdate, 'Q') from dual;
获取当年第几周
select to_char(sysdate, 'WW') from dual;
获取当月第几周
select to_char(sysdate, 'W') from dual;