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

日期和字符转换函数用法


日期转化为字符串

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; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值