精华内容
下载资源
问答
  • 一些常用 Oracle数据库日期时间函数,分享给大家。一、常用日期数据格式1. 获取年的最后一位, 两位, 三位, 四位selectto_char(sysdate,'Y')fromdual;--获取年的最后一位selectto_char(sysdate,'YY')fromdual;--...

    一些常用 Oracle数据库的日期时间函数,分享给大家。

    一、常用日期数据格式

    1. 获取年的最后一位, 两位, 三位, 四位select to_char(sysdate,'Y') from dual; -- 获取年的最后一位

    select to_char(sysdate,'YY') from dual; -- 获取年的最后两位

    select to_char(sysdate,'YYY') from dual; -- 获取年的最后三位

    select to_char(sysdate,'YYYY') from dual; -- 获取年的最后四位

    2. 获取当前季度select to_char(sysdate,'Q') from dual; -- 1 ~ 3月为第一季度, 2表示第二季度。

    3. 获取月份数select to_char(sysdate,'MM') from dual; -- 五月为05

    4. 获取月份的罗马表示select to_char(sysdate,'RM') from dual; -- 五月为V

    5. 获取用9个字符长度表示的月份名select to_char(sysdate,'Month') from dual; -- 五月为5月

    6. 获取当年第几周select to_char(sysdate,'WW') from dual; -- 2014年5月20日为2014年第20周

    7. 获取本月第几周select to_char(sysdate,'W') from dual; -- 2014年5月20日为5月第3周

    8. 获取当年第几天select to_char(sysdate,'DDD') from dual; -- 2014年5月20日为2014年第140天

    9. 获取当月第几天select to_char(sysdate,'DD') from dual; -- 2014年5月20日为5月第20天

    10. 获取一周第几天select to_char(sysdate,'D') from dual; -- 2014年5月20日为一周第三天( 从周日算起 )

    11. 获取中文的星期select to_char(sysdate,'DY') from dual; -- 2014年5月20日为星期二

    12. 获取12进制小时数select to_char(sysdate,'HH') from dual; -- 22:36分用12小时制计时为10点

    13. 获取24进制小时数select to_char(sysdate,'HH24') from dual; -- 22:36分用24小时制计时为22点

    二、常用时间函数

    1. trunc(d, [ ? ])select sysdate S1, -- 返回当前日期,有时分秒

    trunc(sysdate) S2, -- 返回当前日期,无时分秒

    trunc(sysdate, 'year') YEAR, -- 返回当前年的1月1日,无时分秒

    trunc(sysdate, 'month') MONTH, -- 返回当前月的1日,无时分秒

    trunc(sysdate, 'day') DAY, -- 返回当前星期的星期天,无时分秒

    trunc(sysdate, 'Q') QUARTER, -- 返回当前季度的1日,无时分秒

    trunc(sysdate, 'D') WEEK -- 返回当前星期的星期天,无时分秒

    2. round(d, [?]) 舍入到最接近的日期select sysdate S1,

    round(sysdate) S2,

    round(sysdate, 'year') YEAR, -- 舍入到最接近的年 2014/1/1

    round(sysdate, 'month') MONTH, -- 舍入到最接近的月 2014/6/1

    round(sysdate, 'day') DAY -- 舍入到最接近的星期日 2014/5/18

    3. last_day(d) 获取包含d的月最后一天的日期select last_day(sysdate) from dual; -- 获取本月最后一天: 2014/5/31 22:46:01

    4. add_months(d, n) 日期d往后推n个月select add_months(sysdate,2) from dual; -- 日期往后推2个月: 2014/7/20 22:49:36

    5. next_day(d, day)select next_day(sysdate,2) from dual; -- 日期sysdate之后的第一周中, 指定星期的第2天是什么日期

    6. months_between(f,s) 日期f和s间相差月数select months_between(sysdate,to_date('2007-04-12','yyyy-mm-dd'))from dual; -- 85.2889874551971

    7. 获取两个日期间的天数select floor(sysdate - to_date('20140405','yyyymmdd')) from dual;

    三、综合用法

    1. 获取上个月最后一天select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') lastDay from dual;

    2. 获取上个月的今天select to_char(add_months(sysdate,-1),'yyyy-MM-dd') preToday from dual;

    3. 获取上个月的第一天select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') firstDay from dual;

    4. 获取某月中所有周五的具体日期select to_char(b.a, 'YY-MM-DD')

    from (select trunc(sysdate, 'mm') + rownum - 1 a

    where rownum 

    where to_char(b.a, 'day') = '星期五';

    5. 查找2002-02-28至2002-02-01间除了星期一和七的天数select count(*)

    from (select rownum - 1 row_num

    from all_objects

    where rownum <= to_date('2002-02-28', 'yyyy-mm-dd') -

    to_date('2002-02-01', 'yyyy-mm-dd') + 1)

    where to_char(to_date('2002-02-01', 'yyyy-mm-dd') + row_num - 1, 'D') not in('1',

    以上是职坐标对Oracle数据库日期时间函数实例大全整理并发布,希望对同学们学习Oracle数据库日期时间函数有所帮助。

    想了解更多Oracle数据库相关信息,请关注职坐标Oracle数据库频道!

    展开全文
  • 1、sysdate  用途:获取当前系统时间。...用途:将字符类型转化成日期类型的函数,主要用于插入、查询和修改。 select to_date('2010-10-20 13:23:44','yyyy-mm-dd hh24:mi:ss') dateTime from d...

    1、sysdate  

    用途:获取当前系统时间。

    select SYSDATE FROM dual;

    2、to_date('日期字符类型','日期格式类型') 

    用途:将字符类型转化成日期类型的函数,主要用于插入、查询和修改。

    --年 月 日 24制小时 分 秒 上/下午 星期中文
    select to_date('2010-10-20 13:23:44','yyyy-mm-dd hh24:mi:ss:am:dy') dateTime from dual;
    季度

    y 表示年的最后一位

    mm 用2位数字表示月

    dd 表示当月第几天hh 2位数表示小时 12进制mi 2位数表示分钟ss 2位数表示秒 60进制q 一位数 表示季度 (1-4)ww 用来表示当年第几周

    yy 表示年的最后2位

    mon 用简写形式,

    比如11月或者nov

    ddd 表示当年第几天hh24 2位数表示小时 24小时   w用来表示当月第几周

    yyy 表示年的最后3位

    month 用全称,

    比如11月或者november

    am或者pm 表示现在是上午还是下午

        IW 用来表示当年第几周
    yyyy 用4位数表示年

    RM 月份的罗马

    比如:IV表示4月

         day、或者dy用来表示星期几

    对于可以为空的日期字段,可用如下求NULL

    select to_date(null) from dual;

    当省略HH、MI和SS对应的输入参数时,Oracle使用0作为DEFAULT值。 
    如果输入的日期数据忽略时间部分,Oracle会将时、分、秒部分都置为0,也就是说会取整到日。 
    同样,忽略了DD参数,Oracle会采用1作为日的默认值,也就是说会取整到月。 
    但是,如果忽略MM参数,Oracle并不会取整到年,而是取整到当前月

    3、to_char('日期类型','字符格式类型')

    用途:将日期类型转换为字符类型的函数,主要用于查询,也可以进行删除使用。

    select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')  strDateTime from dual;    --获取年-月-日 时:分:秒

    这里的字符格式类型也可以用上面的表格中的格式。

     

    4、其它用法

    1、星期几

    1、当前

    select to_char(SYSDATE,'day') strDay from dual; 

    2、指定时间

    --字符型日期
    select to_char(to_date('2012-10-20','yyyy-mm-dd'),'day') strDay from dual; 
    
    --DateTime型日期,Creat_Time是数据库的日期字段
    select to_char(Creat_Time,'day') strDay from dual; 

    3、英文星期

    select to_char(to_date('2012-10-20','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = English') strDay from dual;   

    2、两个日期间的天数

    select floor(sysdate - to_date('20161010','yyyymmdd')) strTime from dual; 
    
    --其中sysdate=2016/10/20 17:10:51
    --显示结果:10

    3、两个日期间的月数

    --今天距某个时间点
    select  months_between(SYSDATE,date'2019-01-29') Mon from dual;
    
    
    --两个指定的时间点
    select  months_between(date'2019-05-29',date'2019-01-29') Mon from dual;
    
    
    --Add_months(d,n) : 当前日期d后推n个月,用于从一个日期值增加或减少一些月份
    Select add_months(sysdate,2) from dual;

    4、获取昨天:

    select trunc(sysdate-1) from dual;

    5、获取上个月第一天:

    select add_months(trunc(sysdate,'MON'),-1) from dual
     --两个都可以
    select add_months(trunc(sysdate,'MON'),-13) from dual
    
    --以下是上月最后一天
    select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from dual;
    
    --上月今天:
    select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;

    6、获得本季度第一天:

    select trunc(add_months(sysdate,0),'Q') from dual

    7、当前时间减7分钟:

    select  sysdate - interval '7' MINUTE from dual;

    同理,如果减7小时,7天,7月,7年,将SQL中的MINUTE换成hour,day,month,year,

    8、时间间隔乘一个数8:

    select sysdate - 8*interval '7' hour from dual;

    9、本月最后一天:

    Select last_day(sysdate) from dual;

    10、按月进行统计

    select to_char(sysdate,'mm') from dual group by to_char(sysdate,'mm');

    同理,按周是ww,按季度是q,按年是yyyy

    11、NEXT_DAY(DATE,WEEKDAY)的用法:距离当前时间最近的下一个星期几所在的时间。

    DATE参数为日期型,WEEKDAY可用1~7替代,1表示星期日,2代表星期一

    可以设置当前对话的字符集,中文或者英文

    alter   session   set   NLS_DATE_LANGUAGE   =   American; --将当前对话改为英文。

    alter   session   set   NLS_DATE_LANGUAGE   =   'SIMPLIFIED CHINESE'; --将当前对话改为中文。

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

    5、相关日期函数

    • add_months(d,n) 日期d加n个月 
    • last_day(d) 包含d的月份的最后一天的日期 
    • month_between(d,e) 日期d与e之间的月份数,e先于d 
    • new_time(d,a,b) a时区的日期和时间d在b时区的日期和时间 
    • next_day(d,day) 比日期d晚,由day指定的周几的日期 
    • sysdate 当前的系统日期和时间 
    • greatest(d1,d2,...dn) 给出的日期列表中最后的日期 
    • least(d1,k2,...dn) 给出的日期列表中最早的日期 
    • to_char(d [,fmt]) 日期d按fmt指定的格式转变成字符串 
    • to_date(st [,fmt]) 字符串st按fmt指定的格式转成日期值,若fmt忽略,st要用缺省格式 
    • round(d [,fmt]) 日期d按fmt指定格式舍入到最近的日期 
    • trunc(d [,fmt]) 日期d按fmt指定格式截断到最近的日期附:
    展开全文
  • 1.oracle中当前系统时间加减用法 select add_months(sysdate, 12) "NEW YEAR" from dual; /**系统时间+12个月后的时间**/ select extract(month from sysdate) "This Month" from dual; /**...

    1.oracle中当前系统时间加减用法

    select add_months(sysdate, 12) "NEW YEAR" from dual; /**系统时间+12个月后的时间**/
    select extract(month from sysdate) "This Month" from dual; /**获取系统时间所在月份**/
    select (sysdate + 1) "NEW DATE" from dual; /**系统时间+1天后的时间**/
    

     
    2.下面一日期处理函数为网上看到一并写在这里

    create or replace function DATEADD(datepart varchar2,
                                       num      number,
                                       indate   date) return date is
      Result     date;
      v_sql      varchar2(1000);
      v_datepart varchar2(30);
      v_ms       varchar2(13);
    begin
      v_datepart := lower(datepart);
      /*
         Datepart         Abbreviations 
        year             yy, y
         quarter          qq, q
         month            mm, m
         day              dd, d
         week             wk, w
         hour             hh, h
         minute           mi, n
         second           ss, s
         millisecond      ms
      */
      case
        when v_datepart in ('year', 'yy', 'y') then
          v_sql := 'select :1 + interval ''' || num || ''' year from dual';
        when v_datepart in ('quarter', 'qq', 'q') then
          v_sql := 'select :1 + (interval ''3'' month) * ' || num ||
                   ' from dual';
        when v_datepart in ('month', 'mm', 'm') then
          v_sql := 'select :1 + interval ''' || num || ''' month from dual';
        when v_datepart in ('week', 'wk', 'w') then
          v_sql := 'select :1 + (interval ''7'' day) * ' || num || ' from dual';
        when v_datepart in ('day', 'dd', 'd') then
          v_sql := 'select :1 + interval ''' || num || ''' day from dual';
        when v_datepart in ('hour', 'hh') then
          v_sql := 'select :1 + interval ''' || num || ''' hour from dual';
        when v_datepart in ('minute', 'mi', 'n') then
          v_sql := 'select :1 + interval ''' || num || ''' minute from dual';
        when v_datepart in ('second', 'ss', 's') then
          v_sql := 'select :1 + interval ''' || num || ''' second from dual';
        when v_datepart in ('millisecond', 'ms') then
          v_ms  := to_char(num / 1000, 'fm999999990.000');
          v_sql := 'select :1 + interval ''' || v_ms ||
                   ''' second(9,3) from dual';
        else
          RAISE_APPLICATION_ERROR(-20001,
                                  '''' || datepart ||
                                  ''' is not a recognized dateadd option.');
      end case;
    
      execute immediate v_sql
        into Result
        using indate;
    
      return(Result);
    
    EXCEPTION
      WHEN OTHERS THEN
        RAISE;
      
    end DATEADD;

     

     

    展开全文
  • oracle数据库中日期函数的用法

    千次阅读 2016-02-20 23:32:30
    oracle数据库中国日期函数的用法 在oracle数据库中sysdate表示系统当前时间,dual表示的是一个虚表,这个虚表在数据库存一行一列。我是代码控,直接上代码。 例如: 下面的例子是查询系统当前时间select ...

    在oracle数据库中sysdate表示系统当前时间,dual表示的是一个虚表,这个虚表在数据库中存一行一列。我是代码控,直接上代码。
    例如:
    下面的例子是查询系统当前时间

    select sysdate from dual; 

    这里写图片描述
    对查询出的系统时间进行处理

    select  trunc(sysdate) from dual;
    或者
    select trunc(sysdate,'mm') from dual;

    这里写图片描述
    下面的例子,对时间进行间隔处理,对月份进行增减,对当前系统时间加一个月是1,减去一个月就是-1.

    select add_months(trunc(sysdate),1) from dual;

    这里写图片描述
    下面的例子是舍入到最接近的日期

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

    这里写图片描述
    下面的例子是当前时间的下一个星期一

    select Next_day(sysdate, 2) from dual ;

    这里写图片描述

    下面的例子截取最接近的日期,返回的类型是日期类型

    select sysdate S1,
    trunc(sysdate) S2, --返回当前日期,无时分秒
    trunc(sysdate, 'year') YEAR,--返回当前年的1月1日,无时分秒
    trunc(sysdate, 'month')MONTH, --返回当前月的1日,无时分秒
    trunc(sysdate, 'day') DAY --返回当前星期的星期天,无时分秒
    from dual

    下面的例子返回日期的最后一天

     select last_day(trunc(sysdate,'month')) from dual;

    to_date,to_char日期和字符转换函数用法

    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,'q') asnowSecond from dual; --获取时间的季度
    select to_char(sysdate,'mm') asnowMonth from dual; --获取时间的月
    select to_char(sysdate,'dd') asnowDay from dual; -获取时间的日
    select to_char(sysdate,'hh24') as nowHour from dual; --获取时间的时
    select to_char(sysdate,'mi') asnowMinute from dual; --获取时间的分 
    select to_char(sysdate,'ss') asnowSecond from dual; --获取时间的秒

    将字符串转换为日期类型

    select to_date(‘2013-05-07 13:23:44’,’yyyy-mm-dd hh24:mi:ss’) from dual ;

    months_between两个日期之间的月份差

    select months_between(to_date(201302,'yyyymm'),to_date(201212,'yyyymm'))as ans from dual;

    一些具体事例:
    获得上月的最后一天:

    select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from dual;--或者
    select last_day(add_months(trunc(sysdate),-1)) LastDay from dual;

    上个月的今天(同日期)

    select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual;

    上个月的第一天

    select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') First_Day_Last_Month from dual;

    获得日期对应的星期几

    select to_char(to_date('2013-04-07','yyyy-mm-dd'),'day') from dual;

    从当前日期到某一个日期的天数

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

    找出今年的天数

    selectadd_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual

    简单的找出闰年
    如果2月份的天数是28天,那么就不是闰年
    decode函数用法
    DECODE(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)
    这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3

    select decode(to_char(last_day(to_date('200902','yyyymm') ),'dd'),'28','不是闰年','闰年' )from dual

    当前日期是本年的第几天

    selectto_char(sysdate,'ddd'),sysdate from dual;

    查找上月的第一天和最后一刻,本月的第一天和最后一刻

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

    extract函数用法
    返回当前时间的月份

    select extract(month from sysdate) from dual;
    展开全文
  • –当前系统时间 SELECT SYSDATE FROM dual; 2021-01-27 10:14:58 ... --日期 SELECT TO_CHAR(SYSDATE,'hh:mi:ss') as What_Time12 FROM dual ; --12小时制 SELECT TO_CHAR(SYSDATE,'hh24:mi:ss') as What_Time24
  • oracle数据库日期函数

    2021-11-30 16:35:36
    将前端传入的string类型的时间日期字符串转换为datetime类型的数据 函数: TO_DATE('2021-10-07 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
  • 主要介绍了oracle数据库实现获取时间戳的无参函数的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Oracle数据库开发之函数概述,包括经常使用的数值函数、字符函数、日期函数、转换函数等。
  • 系统信息函数、类型转化函数、格式化函数、控制流函数、加密函数日期和时间函数、字符串函数、聚合函数(常用于group by从句的select查询)、数学函数
  • Oracle数据库日期格式转换函数

    万次阅读 2018-07-20 12:52:59
    日期格式转换to_char(FZRQ,’yyyy-mm-dd hh:mi:ss’) eg: select YSZBH, CYDW, to_char(FZRQ,'yyyy-mm-dd hh:mi:ss') as FZRQ, to_char(yxrq,'yyyy-mm-dd hh:mi:ss') as yxrq, KH, PWH, to_char(hjrq,'yyyy-mm...
  • Oracle数据库中的常用函数

    千次阅读 2017-08-18 18:18:38
    Oracle 数据库中的常用函数分为 字符函数、数值函数、日期函数、转换函数、通用函数、分组函数和聚合函数等类型,熟练掌握这些函数的用法会大大方便我们进行数据处理。下面我对这些函数进行依依介绍,希望能给读者...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,422
精华内容 23,368
关键字:

oracle数据库中日期函数