oracle 数据库 日期时间整理
一:日期格式
1)年:YYYY或yyyy (可以截取1-4位)
select to_char(sysdate, 'yyyy') from dual; --2017
select to_char(sysdate, 'yy') from dual; --17
2)月:mm 数字显示月份 1-12 select to_char(sysdate, 'mm') from dual; --12
mon或month 字符集显示:(对于英文前者简写,后者全拼)
select to_char(sysdate, 'mon') from dual; --12月/Dec
select to_char(sysdate, 'month') from dual; --12月/December
3)日:dd 当月第几天 select to_char(sysdate, 'dd') from dual; --05
ddd 当年第几天 select to_char(sysdate, 'ddd') from dual; --339
dy 星期几:简写select to_char(sysdate, 'dy') from dual; --星期二/Tues
day星期几:全拼select to_char(sysdate, 'day') from dual; --星期二/Tuesday
4)时:hh 小时1-12 hh24 小时 1-24
select to_char(sysdate, 'hh') from dual;
select to_char(sysdate, 'hh24') from dual;
5)分:mi 分钟 0-59 select to_char(sysdate, 'mi') from dual;
6)秒:ss 秒钟 0-59 select to_char(sysdate, 'ss') from dual;
7)季度: Q 1-4:春夏秋冬 select to_char(sysdate, 'Q') from dual; (不区分Q大小写)
8)当月第几周 W select to_char(sysdate, 'W') from dual;(不区分W大小写)
9)当年第几周 WW select to_char(sysdate, 'WW') from dual; (不区分WW大小写)
二:日期字符串转换
1)日期转字符串:根据上面的to_char可以获取对应位置的值
select to_char(日期, 格式) from dual;
2)字符串转日期:字符串格式需要能够转换为日期,前后格式并没有关联
select to_char(字符串, 格式) from dual; select to_date('2017/09/12', 'yyyy-mm-dd') from dual;
三:日期相关转换
1)trunc( ):函数截取,返回对应的日期。利用trunc( )截取很容易获取某年、月对应的第一天或者最后一天(-1)
select trunc(sysdate, 'mm') from dual; 根据日期格式多对应的位置截取返回当月第一天
2)floor( ):计算日期相隔天数:在进行加减时会转换为数字进行计算,所以取结果进行取整即可
select floor(sysdate - to_date('20171031','YYYYMMDD')) from dual; --直接取整
select round(sysdate - to_date('20171031','YYYYMMDD'),0) from dual;--保留0位小数
3)months_between( ) :计算两个日期间隔月数,获取的是精确值,根据需要取精度
select months_between( to_date('20171101','yyyymmdd'),to_date('20171105','yyyymmdd')) from dual也可以使用months_between()来计算相隔天数,结果乘以31得到相隔天数(每个月按31天算)
select months_between( to_date('20171101','yyyymmdd'), to_date('20171105','yyyymmdd'))*31 from dual
4)next_day( ):函数求下一个星期几对应的日期(周日为第一天:1-7,或者输入对应)
select next_day(sysdate,5) from dual; --返回下个周四日期
select next_day(sysdate,'星期一') from dual;--返回下个周一日期(如果字符集为中文,则无法输入英文全、简称)
5)add_months( ):增加或者减去多少个月份,并不存在对应的add_days/years,在进行日期加减时可以直接加上或者
减去对应的天数,在进行年份加减时可以使用add_months(日期,n*12) 来进行年份加减
select sysdate+1 from dual; --日期加减
select add_months(sysdate,1) from dual; --月份加减
select add_months(sysdate,1*12) from dual; --可以看做年份加减
6)extract(year|month|... from 日期):截取对应位置值(数字)
select extract(month from sysdate) month from dual; --12
对与日期的一些计算无非就是将上面几种函数搭配起来获取所需的结果