日期转换函数
Posted chen8023miss
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日期转换函数相关的知识,希望对你有一定的参考价值。
--时间格式
--yyyy-MM-dd HH:mi:ss
--HH默认24小时制 1-23:59:59
--HH12表示12小时制 1-12
--to_char()将日期转换成字符串
select sysdate from dual;
select to_char(sysdate,‘yyyy-MM-dd HH:mi:ss‘) from dual;
--to_date()将字符串转换成日期
select to_date(‘2017-11-2‘,‘yyyy-MM-dd HH:mi:ss‘) from dual;
select * from ttt_demo01;
insert into ttt_demo01
values(102,‘scott‘,200.99,to_date(‘1992-11-2‘,‘yyyy-MM-dd HH:mi:ss‘));
--转换含有数字的字符串
select to_number(‘1233.456‘) from dual;
SELECT TO_TIMESTAMP(‘2016-12-12 12:23:34‘,
‘YYYY-MM-DD HH:MI:SS‘) FROM DUAL;
--添加了时区
SELECT TO_TIMESTAMP_TZ(‘2016-12-12 12:23:34 8:00‘, ‘YYYY-MM-DD HH24:MI:SS
TZH:TZM‘) FROM DUAL;
---日期操作函数*****
--截取目标日期里的时间,比如获取当前系统时间的年、月、日
--注意在截取当前系统时间的年月日,可以直接写成 year/month/day from sysdate
--但是hour minute second不可以这么写,需要先转换成字符串,再转换成日期
select extract( year from sysdate) from dual;
select extract( month from sysdate) from dual;
select extract( day from sysdate) from dual;
select extract( second from to_timestamp(to_char(sysdate,‘YYYY-MM-DD HH24:MI:SS‘),‘YYYY-MM-DD HH24:MI:SS‘)) from dual;
select extract(hour from
TO_TIMESTAMP(‘2016-12-12 12:23:34‘, ‘YYYY-MM-DD HH24:MI:SS‘)) from dual;
select extract(minute from TO_TIMESTAMP(‘2016-12-12 12:23:34‘, ‘YYYY-MM-DD
HH24:MI:SS‘)) from dual;
select extract(second from TO_TIMESTAMP(‘2016-12-12 12:23:34‘, ‘YYYY-MM-DD
HH24:MI:SS‘)) from dual;
--计算月差:两个日期之间相差的月数
--注意:计算结果是第一个参数减第二个参数
select months_between(sysdate,to_date(‘1995-11-11‘,‘YYYY-MM-DD HH:mi:ss‘))from
dual;
select months_between
(to_date(‘1980-11-1‘,‘YYYY-MM-DD HH:mi:ss‘),
to_date(‘1995-11-11‘,‘YYYY-MM-DD HH:mi:ss‘))from dual;
--添加月数
select add_months(sysdate,2)from dual;
select add_months(to_date(‘2017-11-1‘,‘YYYY-MM-DD HH:mi:ss‘),-13)from dual;
--获取当前系统时间以后的时间(星期)
--一周的组合以下周的日期(本周已过的日期或者正在过的日期)
--和本周的日期(本周还未过的日期)加起来
select next_day(sysdate,‘Monday‘) from dual;--下周一
select next_day(sysdate,‘Tuesday‘) from dual;--下周二
select next_day(sysdate,‘Wednesday‘) from dual;--下周三
select next_day(sysdate,‘Thursday‘) from dual;--本周四
select next_day(sysdate,‘Friday‘) from dual;--本周五
select next_day(sysdate,‘Saturday‘) from dual;--本周六
select next_day(sysdate,‘Sunday‘) from dual;--本周日
--每个月的最后一天
select last_day(sysdate)from dual;
select last_day(to_date(‘2016-2-1‘,‘YYYY-MM-DD‘))from dual;
--对日期的四舍五入
select round(sysdate,‘year‘) from dual;
select round(sysdate,‘month‘) from dual;
--对年的四舍五入 分界点是6月和7月
select round(to_date(‘2017-6-1‘,‘YYYY-MM-DD‘),‘year‘) from dual;
select round(to_date(‘2017-7-1‘,‘YYYY-MM-DD‘),‘year‘) from dual;
--对月的四舍五入 分界点是15日和16日
select round(to_date(‘2017-6-1‘,‘YYYY-MM-DD‘),‘month‘) from dual;
select round(to_date(‘2017-6-15‘,‘YYYY-MM-DD‘),‘month‘) from dual;
select round(to_date(‘2017-6-16‘,‘YYYY-MM-DD‘),‘month‘) from dual;
select
round(to_date(‘2016-2-15‘,‘YYYY-MM-DD‘),‘month‘) from dual;
select round(to_date(‘2016-2-16‘,‘YYYY-MM-DD‘),‘month‘) from dual;
--截取日期
--此处的day表示星期几
--获取离当前时间最近的星期日(已经过了的)
select trunc(sysdate,‘day‘)from dual;
--获取年初
select trunc(to_date(‘2017-5-5‘,‘yyyy-MM-dd‘),‘year‘)from dual;
select trunc(to_date(‘2016-5-5‘,‘yyyy-MM-dd‘),‘year‘)from dual;
以上是关于日期转换函数的主要内容,如果未能解决你的问题,请参考以下文章