oracle日期处理函数整理

SELECT hiredate 日期,
       --to_char,转为字符串
       to_char(hiredate, 'yyyy') 四位年,--返回1980
       to_char(hiredate, 'yyy') 三位年,--返回980
       to_char(hiredate, 'yy') 两位年,--返回80
       to_char(hiredate, 'mm') 两位月, --返回12
       to_char(hiredate, 'mon','NLS_DATE_LANGUAGE = American') 月简称, --返回dec
       to_char(hiredate, 'month','NLS_DATE_LANGUAGE = American') 月全称, --返回december
       to_char(hiredate, 'ddd') 年内第几天,--返回352
       to_char(hiredate, 'dd') 当月第几天,--返回17
       to_char(hiredate, 'hh24') "24小时制",
       to_char(hiredate, 'hh') "12小时制",
       to_char(hiredate, 'mi') 分,
       to_char(hiredate, 'ss') 秒,
       to_char(hiredate, 'dy','NLS_DATE_LANGUAGE = American') 当周第几天简写,--返回wed
       to_char(hiredate, 'day','NLS_DATE_LANGUAGE = American') 当周第几天全写,--返回wednesday
       to_char(hiredate, 'D') 当周第几天数字, --返回1-7,周日为1,周六为7
       to_char(hiredate, 'q') 季度,--返回4
       to_char(hiredate, 'iw') 当年第几周,--返回51,实际周,按照真实的星期几
       to_char(hiredate, 'ww') 当年第几周,--返回3,逻辑周,一开始就是7天
       to_char(hiredate, 'w') 当月第几周,--返回3,逻辑周,一开始就是7天

       --trunc,截断

       trunc(hiredate,'year') 年初,  --返回当前年的1月1日,无时分秒
       trunc(hiredate, 'yy') 年初,   --上面的简写
       trunc(hiredate,'q'),  --返回当前季度的1日,无时分秒
       trunc(hiredate,'month') 月初 ,   --返回当前月的1日,无时分秒
       trunc(hiredate, 'mm') 月初,      --上面的简写
       trunc(hiredate, 'day') 周初,     --返回当前周的1日(即星期天),无时分秒
       trunc(hiredate) 当前日期,        --返回当前日期,无时分秒
       trunc(hiredate, 'dd') 一天之始,  --跟上面一样
       trunc(hiredate,'hh24') 截取到小时,  --截取到小时(当前小时,零分零秒)
       trunc(hiredate,'mi')截取到分, --截取到分(当前分,零秒)
       
       --round,舍入
       round(hiredate,'year') 年的四舍五入, --年的四舍五入以每年6月为基准
       round(hiredate,'month') 月的四舍五入, --月的四舍五入以每月的15号为基准
       
       --时间偏移
       hiredate + 3/24 "3个小时后",, --更容易使用
       hiredate+numtodsinterval(3,'hour') "3个小时后",--把x转为interval day to second数据类型,常用的单位有 ('day','hour','minute','second')
       hiredate+numtoyminterval(3,'year') "3年后", --将x转为interval year to month数据类型,常用的单位有'year','month' --跟add_months效果一样
       
       --其他函数
       add_months(hiredate,2) 加上2个月,  --时间点再加上n个月,含时分秒
       last_day(hiredate) 当月月未, --时间点当月份最后一天,含时分秒
       next_day(hiredate,6) 下一个星期几的日期, --当前开始下一个星期五,1为周日,7为周六
      /* months_between(to_date('2010-02-28', 'yyy-ymm-dd'), to_date('2010-01-27', 'yyyy-mm-dd'))  间隔多少个月 ,*/
       --在ORACLE中计算月份的差值,都是月底或是日期相同,都会按整月计算。如果计算结果不是整数,ORACLE会把31作为分母来计算。

       --混合使用
       add_months(trunc(hiredate, 'mm'),1)  下月初 ,
       add_months(trunc(hiredate,'year'), 12) 下年初,
       add_months(trunc(hiredate,'year'), 12) - trunc(hiredate,'year') 当年有多少天 ,
       last_day(add_months(trunc(hiredate,'y'),1)) 查看是否闰年,
     
       --extract
        extract(year from hiredate),--从date类型中截取 year,month,day(date日期的格式为yyyy-mm-dd);
        extract(day from systimestamp-to_timestamp(hiredate)) --获取两个日期之间的具体时间间隔,extract函数是最好的选择,可使用day,hour,minute,second , 只能针对timestamp类型使用
  FROM (SELECT to_date('1980-12-17 5:20:30','yyyy-mm-dd hh24:mi:ss') AS hiredate FROM dual );
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值