您的位置:首页 > 数据库 > Oracle

Oracle中的日期相关函数(部分)

2017-06-06 16:07 330 查看

日期和字符转换函数用法

日期转化为字符串

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;
//获取时间的年
select to_char(sysdate,'yyyy') as nowYear   from dual;
//获取时间的月
select to_char(sysdate,'mm')    as nowMonth from dual;
//获取时间的日
select to_char(sysdate,'dd')    as nowDay    from dual;
//获取时间的时
select to_char(sysdate,'hh24') as nowHour   from dual;
//获取时间的分
select to_char(sysdate,'mi')    as nowMinute from dual;
//获取时间的秒
select to_char(sysdate,'ss')    as nowSecond from dual;


字符串转换成日期

select to_date('2017-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss')    from dual


获取当前日期

select sysdate from dual;


求某天是星期几

select to_char(to_date('2017-06-06','yyyy-mm-dd'),'day') from dual;


结果是星期二,如果想改变显示语言,比如英语

select to_char(to_date('2017-06-06','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;


结果是:tuesday

求两个日期间的天数

select floor(sysdate - to_date('20070405','yyyymmdd')) from dual;


求两个日期间的月份数


MONTHS_BETWEEN (x, y)用于计算x和y之间有几个月

如果x在日历中比y早,那么MONTHS_BETWEEN()就返回一个负数

当x 和 y 之间的月份之差不是整月的时候,可以采用小数表示


select months_between(to_date('01-31-2018','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;


Next_day(date,char)

用于计算x时间后第一个星期y的时间,date参数为日期型, char:为1~7或Monday/Mon~Sunday/,还可以是星期一、星期二。。。星期日

select next_day(sysdate,'星期日') from dual;


注意:1表示星期日,2代表星期一……

一年中的第几天

select TO_CHAR(SYSDATE,'DDD'),sysdate from dual


两个日期之间的小时数

select (sysdate-to_date('2017-06-06 12:00:00','yyyy-mm-dd hh24:mi:ss'))*24 from dual


舍入到最接近的日期

select sysdate S1,
round(sysdate) S2,
round(sysdate, 'year') YEAR,
round(sysdate, 'month') MONTH,
round(sysdate, 'day') DAY
from dual;


注意:day是舍入到最接近的星期日

所以上面的结果应该是

S1:2017/6/6 15:32:00

S2:2017/6/7

YEAR:2017/1/1

MONTH:2017/6/1

DAY:2017/6/4


获取月的第一天,最后一天

SELECT
Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,
LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
FROM dual;



获取最后指定日期所在月份的最后一天

SELECT LAST_DAY(HIREDATE) FROM EMP;



获取某年有多少天

select add_months(trunc(to_date('2004-01-10', 'yyyy-mm-dd'), 'year'), 12) -
trunc(to_date('2004-01-01', 'yyyy-mm-dd'), 'year')
from dual


截取年月日

截取当前时间的年份

SELECT EXTRACT(YEAR FROM SYSDATE) FROM DUAL;


截取月份

SELECT EXTRACT(MONTH FROM SYSDATE) FROM DUAL;


截取日期

SELECT EXTRACT(DAY FROM SYSDATE) FROM DUAL;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 oracle