日期函数
1.sysdate --返回系统时间
select sysdate
from dual
2.日期计算的规则
日期加减数字=日期加减天数
日期-日期=日期相差的总天数
select sysdate-1
from dual
select date'2024-3-26' - date'2024-1-1'
from dual
3.add_months(日期,数字) 日期加减数字个月
select add_months(sysdate,-3)
from dual
4.months_between(日期1,日期2) 日期之间相差的总月数
select months_between(date'2024-3-26',date'2024-1-1')
from dual
5.next_day(日期,星期几|数字) 求下一个星期几
select next_day(sysdate,'星期一'),
next_day(sysdate,2),
next_day(sysdate,4)
from dual
一周之初是星期日
星期日 1
星期一 2
...
星期六 7
练习:求下一周的星期三
先求到本周日,再求本周日的下一个星期几
select next_day(next_day(sysdate-1,'星期日'),'星期三')
from dual
6.last_day(日期) --返回日期的月末
select last_day(sysdate)
from dual
trunc :截断日期
按照日期格式,将日期截断到日期格式之初
yyyy 年
mm 月
dd 日
hh|hh24 小时
mi 分钟
ss 秒
q 季度
语法:
trunc(日期,格式)
select trunc(sysdate,'yyyy'),
trunc(sysdate,'mm'),
trunc(sysdate,'q')
from dual
--判断今年是平年还是闰年
--求今年有多少天
select add_months(trunc(sysdate,'yyyy'),12)-trunc(sysdate,'yyyy') 今年天数
from dual
select to_char(add_months(trunc(sysdate,'yyyy'),12)-1,'ddd')
from dual
--求二月有多少天
select add_months(trunc(sysdate,'yyyy'),2)-add_months(trunc(sysdate,'yyyy'),1)
from dual
--二月的最后一天
select to_char(add_months(trunc(sysdate,'yyyy'),2)-1,'dd')
from dual
select to_char(last_day(add_months(trunc(sysdate,'yyyy'),1)),'dd')
from dual
to_char(日期,'格式') 提取日期中的元素
select to_char(sysdate,'yyyy')
from dual
格式:
yyyy 年
mm 月
dd 日
hh|hh24 小时
mi 分钟
ss 秒
q 季度
ddd 当前天是当年的第几天
sssss 当前秒时当天的第几秒
--把emp表中的hiredate,当做员工的出生日期
--求每位员工今年几岁几个月零几天
--几岁
select trunc(months_between(sysdate,hiredate)/12) aa
from emp
--几月
select trunc(months_between(sysdate,hiredate)-trunc(months_between(sysdate,hiredate)/12)*12) aa
from emp
--几天 oracle 按照一个月31天去计算
select trunc(mod(months_between(sysdate,hiredate)-trunc(months_between(sysdate,hiredate)/12)*12,1)*31) aa
from emp
mod(数1,数2) 数1除以数2的余数
select ename,
trunc(months_between(sysdate,hiredate)/12)||'岁'||
trunc(months_between(sysdate,hiredate)-trunc(months_between(sysdate,hiredate)/12)*12)||'个月零'||
trunc(mod(months_between(sysdate,hiredate)-trunc(months_between(sysdate,hiredate)/12)*12,1)*31)||'天' 年龄
from emp
select 'a'||'b'||'1'||'中国'
from dual
--求下周的星期几
--求平闰年
--求几岁几月零几天