oracle日期格式
不同格式日期之间转换
TO_DATE
TO_DATE的日期格式参数中,如果24小时显示,需要使用HH24
1 | select to_date('2020-07-12 10:00:00', 'yyyy-mm-dd hh24:mi:ss') from dual; |
由于oracle中不区分大小写问题,所以分钟使用mi表示;如果使用mm,则会和月份冲突,引起错误。
参数省略HH、MM、SS时,oracle默认取值为0,即只显示到日。
同样,省略DD参数,oracle默认取值为1,取整到当前月;但是省略MM并不会取整到年。
TO_CHAR
1 | select to_char(sysdate,'W') from dual; |
| 参数 | 描述 |
|---|---|
| Q | 当年季度 |
| W | 当月第几周 |
| WW | 当年第几周 |
| D | 一周的第几天(周日为第一天) |
| DD | 当月第几天 |
| DDD | 当年第几天 |
| DY | 星期几简写 |
| DAY | 星期几全称 |
可以在参数后设置日期语言
1 | select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; |
得到当天凌晨0点0分0秒的日期
1 | select trunc(sysdate) from dual; |
得到这天的最后一秒
1 | select trunc(sysdate) + 0.99999 from dual; |
得到小时的具体数值
1 | select trunc(sysdate) + 1/24 from dual; |
得到明天凌晨0点0分0秒的日期
1 | select trunc(sysdate+1) from dual; |
本月一日的日期
1 | select trunc(sysdate,'mm') from dual; |
得到下月一日的日期
1 | select trunc(add_months(sysdate,1),'mm') from dual; |
返回当前月的最后一天
1 | select last_day(sysdate) from dual; |
得到一年的每一天
1 | select trunc(sysdate,'yyyy')+ rn -1 date0 |
判断某一日子所在年分是否为润年
1 | select decode(to_char(last_day(trunc(sysdate,'y')+31),'dd'),'29','闰年','平年') from dual; |