一、取得當前日期是一個星期中的第幾天,注意星期日是第一天
select sysdate, to_char(sysdate,'D') from dual;
sysdate | to_char(sysdate,'D') |
2020/5/3 0:03:17 | 1 |
類似用法:
select to_char(sysdate,'yyyy') from dual; --年
select to_char(sysdate,'Q') from dual; --季
select to_char(sysdate,'mm') from dual; --月
select to_char(sysdate,'dd') from dual; --日
ddd 年中的第幾天
WW 年中的第幾個星期
W 該月中第幾個星期
D 週中的星期幾
hh 小時(12)
hh24 小時(24)
Mi 分
ss 秒
二、取當前日期是星期幾中文顯示
select to_char(sysdate,'day') from dual;
to_char(sysdate,'day') |
星期日 |
三、得到當天凌晨0點0分0秒的日期
select trunc(sysdate) from dual;
trunc(sysdate) |
2020/5/3 |
-- 得到這天的最後一秒
select trunc(sysdate) + 0.99999 from dual;
trunc(sysdate)+0.99999 |
2020/5/3 23:59:59 |
-- 得到小時的具體數值
select trunc(sysdate) + 1/24 from dual;
trunc(sysdate)+1/24 |
2020/5/3 1:00:00 |
trunc(sysdate)+48/24 |
2020/5/5 |
四、得到明天凌晨0點0分0秒的日期
select trunc(sysdate + 1) from dual;
select trunc(sysdate) + 1 from dual;
trunc(sysdate+1) |
2020/5/4 |
五、本月一日的日期
select trunc(sysdate,'mm') from dual;
trunc(sysdate,'mm') |
2020/5/1 |
六、得到下月一日的日期
select trunc(add_months(sysdate,1),'mm') from dual;
trunc(add_months(sysdate,1),'mm') |
2020/6/1 |
七、返回當前月的最後一天
select last_day(sysdate) from dual; --帶時間,其餘不帶
select last_day(trunc(sysdate)) from dual;
select trunc(last_day(sysdate)) from dual;
select trunc(add_months(sysdate,1),'mm') - 1 from dual;
last_day(sysdate) |
2020/5/31 0:27:25 |
八、得到一年的每一天(正常365天,閏年可以大一些)
select trunc(sysdate,'yyyy')+ rn - 1 as date0 from (select rownum rn from all_objects where rownum < 368);
date0 |
2020/1/1 |
2020/1/2 |
... |
九、獲取本月第一天開始的7周的週一
-- 本月開始第一天及以後每週這一天
select trunc(sysdate,'mm') + rn * 7 - 7 as week7 from (select rownum rn from all_objects where rownum < 7)
-- 本月及下月共七週週一
select trunc(sysdate,'d') - 6 + rn * 7 as monday7 from (select rownum rn from all_objects where rownum < 7)
monday7 |
2020/5/4 |
2020/5/11 |
... |
注意,trunc(sysdate,'d')得到的是上週的周天,在美國來說相當於這周的第一天,因此
trunc(sysdate,'d') + 1 + rn * 7 - 7 = trunc(sysdate,'d') - 6 + rn * 7)
十、今天是今年的第N天
SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
select to_char(sysdate,'ddd') from dual;
to_char(sysdate,'ddd') |
124 |
十一、現有的日期加上2年(使用trunc截掉時間)
select add_months(sysdate,24) from dual;
add_months(sysdate,24) |
2022/5/3 0:52:19 |
十二、判斷某一天所在年分是否爲潤年
select decode(to_char(last_day(trunc(sysdate,'y') + 31),'dd'),'29','閏年','平年') as leaporcommon from dual;
leaporcommon |
閏年 |
十三、得到日期的季度
select ceil(to_number(to_char(sysdate,'mm')) / 3) from dual;
select to_char(sysdate, 'q') from dual;
to_char(sysdate, 'q') |
2 |
當然,還可以衍生出許多種格式,就不一一列舉了,相信你可以舉一反三。