oracle 日期函数 知识点

    xiaoxiao2026-05-13  9

          今天给大家讲的是Oracle 日期函数的知识点,因为现在好多公司面试都会问这个问题,去公司也需要用到日期函数。然后本博主曾经学过,当时也会了,可是过了些日子就忘掉了,所以在此记录一下,也算一个笔记加印象。

    首先oracle时间类型:

    数据类型

    长度

    说明

    DATE

    7字节

    默认值为SYSDATE的年、月,日为01。包含一个时间字段,若插入值没有时间字段,则默认值为:00:00:00 or 12:00:00 for 24-hour and 12-hour clock time。没有分秒和时间区。

    TIMESTAMP [(fractional_seconds_precision)]

    7至11字节

    fractional_seconds_precision为Oracle存储秒值小数部分位数,默认为6,可选值为0到9。没有时间区。

    TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE

    13字节

    使用UTC,包含字段YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_

    HOUR, TIMEZONE_MINUTE

    TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE

    7至11字节

    存时使用数据库时区,取时使用回话的时区。

    INTERVAL YEAR [(year_precision)] TO MONTH

    5字节

    包含年、月的时间间隔类型。year_precision是年字段的数字位数,默认为2,可取0至9。

    INTERVAL DAY [(day_precision)]

    TO SECOND [(fractional_seconds_precision)]

    11字节

    day_precision是月份字段的数字位数,默认为2,可取0至9。

    1. 日期和字符转换函数用法(to_date,to_char)        

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; //日期转化为字符串 select to_char(sysdate,'yyyy') from dual; //获取当前时间的年 select to_char(sysdate,'mm') from dual; //获取当前时间的月 select to_char(sysdate,'dd') from dual; //获取当前时间的日 select to_char(sysdate,'hh24') from dual; //获取当前时间的时 select to_char(sysdate,'mi') from dual; //获取当亲时间的分 select to_char(sysdate,'ss') from dual; //获取当前时间的秒 select to_char(sysdate,'day')   from dual; //获取当前时间是星期几

      1.日期格式参数含义说明   D 一周中的星期几   DAY 天的名字,使用空格填充到9个字符   DD 月中的第几天   DDD 年中的第几天   DY 天的简写名   IW ISO标准的年中的第几周   IYYY ISO标准的四位年份   YYYY 四位年份   YYY,YY,Y 年份的最后三位,两位,一位   HH 小时,按12小时计   HH24 小时,按24小时计   MI 分   SS 秒   MM 月   Mon 月份的简写   Month 月份的全名   W 该月的第几个星期   WW 年中的第几个星期     1.日期时间间隔操作 当前时间减去7分钟的时间 select sysdate,sysdate - interval ’7’ MINUTE from dual 当前时间减去7小时的时间 select sysdate - interval ’7’ hour from dual 当前时间减去7天的时间 select sysdate - interval ’7’ day from dual 当前时间减去7月的时间 select sysdate,sysdate - interval ’7’ month from dual 当前时间减去7年的时间 select sysdate,sysdate - interval ’7’ year from dual 时间间隔乘以一个数字 select sysdate,sysdate - 8 *interval ’2’ hour from dual

    trunc(d1[,c1])  

    返回日期d1所在期间(参数c1)的第一天日期

    d1日期型,c1为字符型(参数),c1默认为j(即当前日期)

    c1对应的参数表:

    本周星期日:day或dy或d (每周顺序:日,一,二,三,四,五,六)

    本月初日期:month或mon或mm或rm

    本季日期:q

    本年初日期:syear或year或yyyy或yyy或yy或y(多个y表示精度) 

    本世纪初日期:cc或scc

    【返回】:日期 select sysdate from dual --当时日期

    select trunc(sysdate) from dual

    select trunc(sysdate ,'DD') from dual --今天日期

    select trunc(sysdate,'d')+7 from dual --本周星期日

    select trunc(sysdate,'dy')+7 from dual  --本周星期日

    select trunc(sysdate,'day')+7 from dual --本周星期日

    select trunc(sysdate,'q') from dual--本季开始日期

    select trunc(sysdate,'month') from dual --本月开始日期

    select trunc(sysdate ,'mm') from dual --本月开始日期

    select trunc(sysdate,'year') from dual  --本年开始日期

    select trunc(sysdate ,'yyyy') from dual --本年开始日期

    select trunc(sysdate ,'HH24') from dual --本小时开始时间

    select trunc(sysdate ,'MI') from dual --本分钟开始时间

    select trunc(sysdate ,'CC') from dual --本世纪开始时间

    select trunc(LAST_DAY(sysdate),'dd') from dual --本月最后一天

     

    3、round(10.2356,2)函数可以对数字按指定保留小数位数四舍五入,这个函数还可以对日期四舍五入 select round(sysdate,'yyyy') from dual 四舍五入到年

    select round(sysdate,'mm') from dual 四舍五入到月

    select round(sysdate,'dd') from dual 四舍五入到日

    select round(sysdate,'hh') from dual 四舍五入到小时

    select round(sysdate,'mi') from dual 四舍五入到分钟

     

    4、TRUNC还可以对number类型使用, TRUNC(89.985,2)=89.98 TRUNC(89.985)=89 TRUNC(89.985,-1)=80

    转载请注明原文地址: https://ju.6miu.com/read-1309632.html
    最新回复(0)