`
weishaoxiang
  • 浏览: 96643 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

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

    ORACLE日期时间函数大全.pdf

    ORACLE 日期时间函数大全 oracle 日期时间函数大全是指在 Oracle 数据库中处理日期和时间相关的函数,包括日期和字符转换函数、日期算术函数、日期比较函数等。以下是 Oracle 日期时间函数大全的知识点总结: 日期...

Global site tag (gtag.js) - Google Analytics