-
sysdate
【功能】:返回当前日期。
【参数】:没有参数,没有括号
【返回】:日期
select sysdate from dual;
-
current_timestamp
【功能】:以timestamp with time zone数据类型返回当前会话时区中的当前日期
【参数】:没有参数,没有括号
【返回】:日期
select current_timestamp from dual;
-
current_date
【功能】:返回当前会话时区中的当前日期
【参数】:没有参数,没有括号
【返回】:日期
select current_date from dual;
-
**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;
-
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个月
-
日期加减
【功能】:返回在日期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;
-
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小时前
-
查找将要在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')
-
今天公司要我做一个 下载当天过生日的 人的照片 的功能, 这个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' )
-
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;
- 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:星期六
- last_day(d)
【功能】:返回日期d所在月份的最后一天
【参数】:日期
【返回】:日期
select last_day(sysdate) from dual;