一、取得当前日期是一个星期中的第几天,注意星期日是第一天
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 |
当然,还可以衍生出许多种格式,就不一一列举了,相信你可以举一反三。