`

Oracle 日期时间运算

阅读更多

---------------------oracle 时间运算-------------------------------------------------   

  

--两个日期间的天数   

SELECT FLOOR(SYSDATE - TO_DATE('20110701''yyyymmdd')) FROM DUAL;   

  

--查找2002-02-28至2002-02-01间除星期一和七的天数   

SELECT COUNT(*)   

  FROM (SELECT ROWNUM - 1 RNUM   

          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') + RNUM - 1, 'D'NOT IN  

       ('1''7');   

  

--两个日期间的月数   

SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('05-21-2011''MM-DD-YYYY')) "MONTHS"  

  FROM DUAL;   

  

SELECT MONTHS_BETWEEN(SYSDATE, DATE '2010-07-07') MONTHS FROM DUAL;   

  

--处理月份天数不定的办法     

SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE) + 1, -2), 'yyyymmdd'),   

       LAST_DAY(SYSDATE)   

  FROM DUAL;   

  

--找出今年的天数     

SELECT ADD_MONTHS(TRUNC(SYSDATE, 'year'), 12) - TRUNC(SYSDATE, 'year')   

  FROM DUAL;   

  

--闰年的处理方法 ;如果是28就不是闰年    

TO_CHAR(LAST_DAY(TO_DATE('02' || :YEAR'mmyyyy')), 'dd')   

  

--不同时区的处理     

  SELECT TO_CHAR(NEW_TIME(SYSDATE, 'GMT''EST'), 'dd/mm/yyyy hh:mi:ss'),   

         SYSDATE   

    FROM DUAL;   

  

--5秒钟一个间隔,SSSSS表示5位秒数     

SELECT TO_DATE(FLOOR(TO_CHAR(SYSDATE, 'SSSSS') / 300) * 300, 'SSSSS'),   

       TO_CHAR(SYSDATE, 'SSSSS')   

  FROM DUAL;   

  

-- 一年的第几天     

SELECT TO_CHAR(SYSDATE, 'DDD'), SYSDATE FROM DUAL;   

  

--计算小时,分,秒,毫秒     

SELECT DAYS,   

       A,   

       TRUNC(A * 24) HOURS,   

       TRUNC(A * 24 * 60 - 60 * TRUNC(A * 24)) MINUTES,   

       TRUNC(A * 24 * 60 * 60 - 60 * TRUNC(A * 24 * 60)) SECONDS,   

       TRUNC(A * 24 * 60 * 60 * 100 - 100 * TRUNC(A * 24 * 60 * 60)) MSECONDS   

  FROM (SELECT TRUNC(SYSDATE) DAYS, SYSDATE - TRUNC(SYSDATE) A FROM DUAL);   

  

SELECT SUBSTR('2004-32', 1, 4) YY, TO_NUMBER(SUBSTR('2004-32', 6)) WW   

  FROM DUAL;   

  

--1.查询某周的第一天   

SELECT TRUNC(DECODE(WW,   

                    53,   

                    TO_DATE(YY || '3112''yyyyddmm'),   

                    TO_DATE(YY || '-' || TO_CHAR(WW * 7), 'yyyy-ddd')),   

             'd') LAST_DAY   

  FROM (SELECT SUBSTR('2004-32', 1, 4) YY,   

               TO_NUMBER(SUBSTR('2004-32', 6)) WW   

          FROM DUAL);   

  

SELECT TRUNC(TO_DATE(SUBSTR('2011-01', 1, 5) ||   

                     TO_CHAR((TO_NUMBER(SUBSTR('2011-01', 6))) * 7),   

                     'yyyy-ddd'),   

             'd') - 6 FIRST_DAY   

  FROM DUAL;   

  

SELECT MIN(V_DATE)   

  FROM (SELECT (TO_DATE('200201''yyyymm') + ROWNUM) V_DATE   

          FROM ALL_TABLES   

         WHERE ROWNUM < 370)   

 WHERE TO_CHAR(V_DATE, 'yyyy-iw') = '2002-49';   

  

--2.查询某周的最后一天   

SELECT TRUNC(DECODE(WW,   

                    53,   

                    TO_DATE(YY || '3112''yyyyddmm'),   

                    TO_DATE(YY || '-' || TO_CHAR(WW * 7), 'yyyy-ddd')),   

             'd') - 6 FIRST_DAY   

  FROM (SELECT SUBSTR('2004-33', 1, 4) YY,   

               TO_NUMBER(SUBSTR('2004-33', 6)) WW   

          FROM DUAL);   

  

SELECT TRUNC(TO_DATE(SUBSTR('2003-01', 1, 5) ||   

                     TO_CHAR((TO_NUMBER(SUBSTR('2003-01', 6))) * 7),   

                     'yyyy-ddd'),   

             'd') LAST_DAY   

  FROM DUAL;   

  

SELECT MAX(V_DATE)   

  FROM (SELECT (TO_DATE('200408''yyyymm') + ROWNUM) V_DATE   

          FROM ALL_TABLES   

         WHERE ROWNUM < 370)   

 WHERE TO_CHAR(V_DATE, 'yyyy-iw') = '2004-33';   

  

--3.查询某周的日期   

SELECT MIN_DATE, TO_CHAR(MIN_DATE, 'day'DAY  

  FROM (SELECT TO_DATE(SUBSTR('2004-33', 1, 4) || '001' + ROWNUM - 1,   

                       'yyyyddd') MIN_DATE   

          FROM ALL_TABLES   

         WHERE ROWNUM <= DECODE(MOD(TO_NUMBER(SUBSTR('2004-33', 1, 4)), 4),   

                                0,   

                                366,   

                                365)   

        UNION  

        SELECT TO_DATE(SUBSTR('2004-33', 1, 4) - 1 ||   

                       DECODE(MOD(TO_NUMBER(SUBSTR('2004-33', 1, 4)) - 1, 4),   

                              0,   

                              359,   

                              358) + ROWNUM,   

                       'yyyyddd') MIN_DATE   

          FROM ALL_TABLES   

         WHERE ROWNUM <= 7   

        UNION  

        SELECT TO_DATE(SUBSTR('2004-33', 1, 4) + 1 || '001' + ROWNUM - 1,   

                       'yyyyddd') MIN_DATE   

          FROM ALL_TABLES   

         WHERE ROWNUM <= 7)   

 WHERE TO_CHAR(MIN_DATE, 'yyyy-iw') = '2004-33';   

    

    

 ---------------------------转换函数--------------------------------------------------------   

to_char() --   

  

to_date() --   

  

to_number('numbervalue'--转换成数值   

  

SELECT to_number('1314'FROM dual;   

  

round('numbervalue'--取整函数(四舍五入)   

  

Select round(to_number('123.567')) from dual;   

  

floor(sysdate - to_date('20110701','yyyymmdd'))   

分享到:
评论

相关推荐

    Oracle时间日期操作

    2. 日期和时间的基本运算:Oracle 提供了多种日期和时间的基本运算符,例如:`+`、`-`、`*`、`/` 等,可以对日期和时间进行加、减、乘、除等运算。 3. 日期和时间的格式化:使用 `to_char` 函数可以将日期和时间...

    Oracle日期函数练习

    Oracle 日期函数是 Oracle 数据库中的一组功能强大且广泛使用的函数,它们可以对日期进行各种操作和计算,本次练习涵盖了 Oracle 中常用的日期函数,包括获取当前系统时间、对日期的月进行加减、获取给定日期所在月...

    oracle自定义日期函数

    此外,DATEADD 函数还可以应用于各种日期处理场景,例如添加指定的时间间隔到某个日期中、计算某个日期后的时间间隔等。 DATEADD 函数的限制 -------------------- DATEADD 函数的限制是它只能添加指定的时间间隔...

    ORACLE 日期和时间处理汇总

    Oracle 日期和时间处理函数提供了多种方式来处理日期和时间,包括日期和字符转换、日期语言设置、日期间的天数、时间为空的用法、日期范围查询、日期格式冲突问题、计算日期间的天数和计算月份之间的天数等。

    Oracle日期时间(DateTime)操作

    本文将深入解析Oracle日期时间操作的一些核心知识点,涵盖基本的日期时间函数使用、日期时间的格式化、以及一些高级的日期时间计算技巧。 ### 一、基础日期时间函数 #### 1. SYSDATE `SYSDATE`是Oracle系统中获取...

    oracle日期时间函数大全.pdf

    Oracle 日期时间函数大全提供了多种日期计算函数,如计算两个日期之间的天数等。 例如,`SELECT FLOOR(SYSDATE - TO_DATE('20020405', 'YYYYMMDD')) FROM DUAL;` 计算当前日期和日期 '20020405' 之间的天数。 日期...

    oracle日期操作举例

    在Oracle数据库中,我们可以方便地执行日期时间的间隔操作,比如对当前时间进行增减指定的时间间隔。 **1. 当前时间减去7分钟的时间** ```sql SELECT SYSDATE, SYSDATE - INTERVAL '7' MINUTE FROM DUAL; ``` 此...

    oracle_日期_加减方法

    在Oracle数据库中,日期操作是常见的SQL查询任务,特别是在处理历史数据或进行时间相关的分析时。Oracle提供了丰富的函数来帮助用户对日期进行加减操作,这些功能强大且灵活的函数使得开发者能更精确地处理时间数据...

    oracle日期处理完全版

    Oracle数据库在日期处理方面提供了丰富的函数和操作方式,使得对日期和时间的管理变得非常灵活。以下是对标题和描述中提到的知识点的详细说明: 1. **日期和字符转换**: - `to_date` 函数用于将字符型数据转换为...

    oracle日期函数全面总结

    通过学习和掌握以上Oracle日期函数,你可以轻松地进行日期和时间的计算、比较和格式化,提升数据库操作的效率。同时,了解如何处理时区问题也是非常重要的,特别是在分布式系统中。希望这些知识对你在处理Oracle...

    使用oracle计算系统当前时间的毫秒数

    1. **获取当前日期时间**:首先使用`SYSDATE`函数获取系统的当前日期时间。 2. **转换为自1970年1月1日以来的天数**:接着将`SYSDATE`减去1970年1月1日(使用`TO_DATE`函数)得到的结果表示的是自1970年1月1日至当前...

    Oracle计算连续天数,计算连续时间,Oracle连续天数统计

    在Oracle数据库中,计算连续天数或连续时间是一项常见的需求,尤其在数据分析、报表生成或者业务规则检查等场景。这个任务通常涉及到日期处理和逻辑判断,Oracle提供了丰富的日期函数和运算符来支持这类操作。本篇...

    ORACLE中日期和时间函数汇总

    ORACLE 中日期和时间函数汇总 Oracle 中的日期和时间函数是数据库管理系统中非常重要的一部分,掌握这些函数可以帮助开发者和 DBA 更好地处理日期和时间相关的操作。 日期和字符转换函数 Oracle 中提供了两个...

    oracle 日期处理 总结

    以下是对Oracle日期处理的一些关键知识点的详细说明: 1. **将时间字符串转换为时间** Oracle提供了`to_date()`函数将字符串转换为日期类型。这个函数需要两个参数:要转换的字符串和匹配的转换格式。例如,`to_...

    oracle日历转化成农历

    在Oracle中,日期数据类型DATE存储的是日期和时间信息,包括年、月、日、小时、分钟和秒。当我们需要将日期转换为农历时,实际上是在处理日期的计算逻辑,因为农历与阳历的转换涉及到复杂的天文算法。 要实现这个...

    oracle日期字符串的相互转换

    ### Oracle日期与字符串相互转换详解 #### 一、概述 在Oracle数据库中,日期与字符串之间的转换是一项常用且重要的操作。正确地进行日期与字符串之间的转换对于数据处理、查询优化等方面有着不可忽视的作用。本...

Global site tag (gtag.js) - Google Analytics