PLSQL 日期函数 您所在的位置:网站首页 oracleto_date相减报错 PLSQL 日期函数

PLSQL 日期函数

#PLSQL 日期函数| 来源: 网络整理| 查看: 265

日期函数 1.sysdate        当前系统时间 日期加减数字=日期加减天数 日期-日期=相差的天数

2.add_months(日期,数)         日期加减月数 数会自动截断取整

select add_months(sysdate,1),        add_months(sysdate,-1),        add_months(sysdate,12),        add_months(sysdate,1.9) from dual

--查询三个月前距今多少天 select sysdate-add_months(sysdate,-3) from dual

--查询三个月后是几月 select to_char(add_months(sysdate,3),'mm') from dual

--查询一年后的今天是星期几 select to_char(add_months(sysdate,12),'dy') from dual

3.months_between(日期1,日期2)     日期之间相差的月数 在oracle中默认一个月有31天 1天=1/31月

select months_between(date'2021-7-1',date'2021-5-1') A,        months_between(date'2021-5-1',date'2021-7-1') B,        months_between(date'2021-7-15',date'2021-5-1') C,        months_between(sysdate,date'2021-5-1') D from dual

--查询2008-8-8距今几个月,四舍五入保留两位小数 select round(months_between(sysdate,date'2008-8-8'),2) from dual

--查询2012-12-21距今多少年,四舍五入保留两位小数 select round(months_between(sysdate,date'2012-12-21')/12,2) from dual

--查询2008-8-8距今几年零几个月零几天  

--小数*31得天 select trunc(months_between(sysdate, date '2008-8-8') / 12) || '年' ||        trunc(months_between(sysdate, date '2008-8-8') -              (trunc(months_between(sysdate, date '2008-8-8') / 12) * 12)) || '月' ||        trunc(((months_between(sysdate, date '2008-8-8') -              (trunc(months_between(sysdate, date '2008-8-8') / 12) * 12)) -              trunc(months_between(sysdate, date '2008-8-8') -                     (trunc(months_between(sysdate, date '2008-8-8') / 12) * 12))) * 31) || '日' 岁

  from dual

select trunc(months_between(sysdate,date'2008-8-8')/12) 年,        trunc(mod(months_between(sysdate,date'2008-8-8'),12)) 月,        trunc(mod(months_between(sysdate,date'2008-8-8'),1)*31) 日 from dual

--日期推进得天 select trunc(sysdate-add_months(date'2008-8-8',trunc(months_between(sysdate,date'2008-8-8')))) A from dual

1.求两个日期相差的 年数   months_between()/12 月数   months_between() 天数   日期相减 小时数 日期相减*24 分钟数 日期相减*24*60 秒数   日期相减*24*60*60

2.日期加减 年   add_months(日期,年数*12) 月   add_months(日期,月数) 天   日期±天数 小时 日期±小时数/24 分钟 日期±/分钟数24/60 秒   日期±秒数/24/60/60

--把hiredate当做员工生日,查询每个人现在几岁零几个月零几天

4.next_day(日期,'星期几'|对应的数字)     下一个星期几

select next_day(sysdate,'星期三'),        next_day(sysdate,7) from dual

--下周的星期五 select next_day(sysdate,'星期五') from dual

--求2020年的第一个星期三 select next_day(date'2020-1-1'-1,'星期三') from  dual

--求下周周六是多少号 select next_day(next_day(sysdate-1,'星期日'),'星期六') from dual

求下周几的方法:先求本周日,再求本周日的下一个周几,(日期-1)

select next_day(next_day(sysdate-1,'星期日'),'星期六') from dual

--求下下周的周六 select next_day(next_day(sysdate-1,1),7)+7 from dual

--求下下下下下下下下下周的周三 select next_day(next_day(sysdate-1,1),4)+56 from dual

--求上上上周的周四 select next_day(next_day(sysdate-1,1),5)-7-7-7-7 from dual

--求下周周日是多少号 select next_day(next_day(sysdate-1,1),1) from dual

5.last_day(日期)       月的最后一天   select last_day(sysdate) from dual

--求平闰年 --求2月份有多少天 select last_day(to_date(to_char(sysdate,'yyyy')||'-2-1','yyyy-mm-dd')) from dual

--查询3个月后的月末是星期几 select to_char(last_day(add_months(sysdate,3)),'dy') from dual

6.round(日期,'格式') 四舍五入到日期之初(过半则入,不过则舍) yyyy 1-6月          本年   7-12月         下一年 --到最近的年初 mm   1-15日         本月   16-31日        下个月 --到最近的月初  (月份按照一个月30来计算) d/dy 1-4(周日-周三) 本周   5-7(周四-周六) 下周 --到最近的周日   (周日是一周的第一天) dd   0-11时         今天   12-23时        下一天--最近的一天之初 hh   0-29分         本小时 30-59分        下一个小时--最近的整时 mi   0-30秒         这分钟 31-59秒        下分钟--最近的整分 q    =当季第二个月的16日 下个季度 不能四舍五入到整秒

--当前日期四舍五入到整年,整季,整月,整周,整天,整时,整分 分别哪个日期 [板书] select round(sysdate,'yyyy') 整年,        round(sysdate,'q')    整季,        round(sysdate,'mm')   整月,        round(sysdate,'d')    整周,        round(sysdate,'dd')   整天,        round(sysdate,'hh')   整时,        round(sysdate,'mi')   整分      --,round(sysdate,'ss') --错误 from dual

7.trunc(日期,'格式') 截断到日期之初 yyyy 年初 q    季初 mm   月初 d/dy 周初--周日 dd   天初--0点0分 hh   整时 mi   整分 SS --错误

--当前日期截断到整年,整季,整月,整周,整天,整时,整分 分别哪个日期[板书] select trunc(sysdate,'yyyy') 整年,        trunc(sysdate,'q')    整季,        trunc(sysdate,'mm')   整月,        trunc(sysdate,'d')    整周,        trunc(sysdate,'dd')   整天,        trunc(sysdate,'hh')   整时,        trunc(sysdate,'mi')   整分     --,round(sysdate,'ss') 错误 from dual

--求平闰年

--求今年有多少天 select to_char(add_months(trunc(sysdate,'yyyy'),12)-1,'ddd') from dual

select add_months(trunc(sysdate,'yyyy'),12)-trunc(sysdate,'yyyy') from dual

--求二月有多少天 select last_day(add_months(trunc(sysdate,'yyyy'),1)) from dual

select add_months(trunc(sysdate,'yyyy'),2)-1 from dual

函数名(日期,'格式')的横向对比        │to_char       │ROUND         │ TRUNC ───────┼──────────────┼──────────────┼─────── yyyy   │提取年        │返回最近的年初│返回年初    q      │提取季度      │返回最近的季初│返回季初 mm     │提取月        │返回最近的月初│返回月初 dy     │提取星期(汉字)│返回最近的周初│返回周初(周日) d      │提取星期(数字)│返回最近的周初│返回周初(周日) dd     │提取日        │返回最近的天初│返回天初 hh/hh12│提取时(12制)  │返回最近的时初│返回时初 hh24   │提取时(24制)  │返回最近的时初│返回时初 mi     │提取分        │返回最近的分初│返回分初 SS     │提取秒        │/*精度错误*/  │/*精度错误*/ 

日期函数小结 函数名  │SYSDATE│add_months│months_between│next_day│last_day│ROUND │trunc│ ────────┼───────┼──────────┼──────────────┼────────┼────────┼──────┼─────┤ 返回类型│ 日期  │   日期   │   数值       │  日期  │  日期  │ 日期 │日期 │

--通用函数 1.userenv('language')       查看客户端字符集

select userenv('language') from dual

2.greatest(参1,参2...)   返回多个参数中的最大值 参数的数据类型跟第一个参数的数据类型一致 空最大

select greatest(100,200,300) from dual

select greatest(date'2020-1-1',sysdate,date'2022-8-5') from dual

select greatest('a','b','c') from dual

select greatest('100','1000',50,null) from dual

3.least(参1,参2..)    返回多个参数中的最小值 参数的数据类型跟第一个参数的数据类型一致 空最小

select least(100,200,300) from dual

select least(date'2020-1-1',sysdate,date'2022-8-5') from dual

select least('a','b','c') from dual

select least('100','1000',50,null) from dual

--查询员工编号,经理编号,部门编号 --以及他们的最大值和最小值 select empno,mgr,deptno,greatest(empno,mgr,deptno),least(empno,mgr,deptno) from emp



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有