Oracle日期函数

  1. sysdate

    【功能】:返回当前日期。

    【参数】:没有参数,没有括号

    【返回】:日期

    select sysdate from dual; 
    
  2. current_timestamp

    【功能】:以timestamp with time zone数据类型返回当前会话时区中的当前日期

    【参数】:没有参数,没有括号

    【返回】:日期

    select current_timestamp from dual; 
    
  3. current_date

    【功能】:返回当前会话时区中的当前日期

    【参数】:没有参数,没有括号

    【返回】:日期

    select current_date from dual;
    
  4. **ROUND(r[,f])函数:**将日期r按f的格式进行四舍五入。如果f不填,则四舍五入到最近的一天。

    select sysdate, --当前时间
           round(sysdate, 'yyyy') as year, --按年
           round(sysdate, 'mm') as month, --按月
           round(sysdate, 'dd') as day, --按天
           round(sysdate) as mr_day, --默认不填按天
           round(sysdate, 'hh24') as hour --按小时
      from dual;
    
  5. add_months(d,n),在某一个日期d上,加上指定的月数n,返回计算后的新日期。d表示日期,n表示要加的月数。

    【功能】:返回在日期d基础上再加n个月后新的日期。

    【参数】:d日期型,n数字型

    【返回】:日期

    select add_months(sysdate,2) from dual;   -- 加上2个月
    select add_months(sysdate,-2) from dual;  -- 减去2个月
    
  6. 日期加减

    【功能】:返回在日期d基础上再加/减n个天后新的日期。

    【返回】:日期

    select sysdate-10,sysdate+10 from dual;
    
    select * from infos
       where enrolldate between sysdate and enrolldate+10;
    
    select * from infos
       where enrolldate>sysdate and enrolldate<sysdate+10;
    
  7. INTERVAL c1 set1

    【功能】:变动日期时间数值

    【参数】:c1为数字字符串或日期时间字符串,set1为日期参数

    【参数表】:set1具体参照示例 (Year,Month,Day,Hour,Minute,Second.)

    【返回】:日期时间格式的数值,前面多个+号 以天或天更小单位时可用数值表达式借用,如1表示1天,1/24表示1小时,1/24/60表示1分钟

    select sysdate,sysdate + interval '2' year from dual; --2年后的日期时间
    select sysdate,sysdate + interval '-2' year from dual; --2年前的日期时间
    
    select sysdate,sysdate + interval '2' month from dual; --2个月后的日期时间
    select sysdate,sysdate + interval '-2' month from dual; --2个月前的日期时间
    
    select sysdate,sysdate + interval '10' day from dual;--10天后
    select sysdate,sysdate + interval '-10' day from dual;--10天前
    
    select sysdate,sysdate + interval '10' hour from dual;--10小时后
    select sysdate,sysdate + interval '-10' hourfrom dual;--10小时前
    
    
  8. 查找将要在2个月以内过生的数据

    select emp.*,to_char(hiredate,'MMDD') birthday 
       from emp
          where to_char(hiredate,'MMDD')
             between 
                 to_char(sysdate,'MMDD')
             and
                 to_char(add_months(sysdate,2),'MMDD')
    
  9. 今天公司要我做一个 下载当天过生日的 人的照片 的功能, 这个sql写了半天…记录一下:
    如果要查指定日期过生日的数据 , 就将日期传过来 , 这里我传的是字符串格式的 , 用date转换一下:

    date'2019-08-08'
    

    查询指定日期过生日的数据 , 日期为前台传来的数据

    select a.birthday from 表名 a 
    where to_char( a.birthday, 'MMDD' ) = to_char( date'2019-08-08' , 'MMDD' )
    

    如果是直接查询当天的:

    select a.birthday from 表名 a 
    where to_char( a.birthday, 'MMDD' ) = to_char( sysdate , 'MMDD' )
    

    如果是查询指定时间段内过生日的,下面是查询八月1号到八月8号过生日的人

    select a.birthday , from 表名 a where 
    to_char( a.birthday, 'MMDD' ) >= to_char( date'2019-08-01' , 'MMDD' )
    and to_char( a.birthday, 'MMDD' ) <= to_char( date'2019-08-08' , 'MMDD' )
    
  10. months_between(d1,d2)

【功能】:返回日期d1到日期d2之间的月数。

【参数】:d1,d2 日期型

【返回】:数字 如果d1>d2,则返回正数 如果d1<d2,则返回负数

select months_between(sysdate,to_date('2021-05-09','yyyy-mm-dd')) from dual;
  1. next_day(d1[,c1])

【功能】:返回日期d1在下周,星期几(参数c1)的日期

【参数】:d1日期型,c1为字符型(参数),c1默认为j(即当前日期)

【参数表】:c1对应:星期一,星期二,星期三……星期日

【返回】:日期

select next_day(sysdate,'星期四') from dual;--返回下个周四的日期
select next_day(sysdate,3) from dual; --c1的值可以是[1,7]之间的正整数。
--1:星期日 2:星期一.....7:星期六
  1. last_day(d)

【功能】:返回日期d所在月份的最后一天

【参数】:日期

【返回】:日期

select last_day(sysdate) from dual;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值