`

Oracle常用函数:DateDiff() 返回两个日期之间的时间间隔和替代方法

 
阅读更多

Oracle常用函数:DateDiff() 返回两个日期之间的时间间隔自定义函数

(当然也有其他方法实现,在ORACLE里日期类型是可以直接进行比较的,最后会给出方法示例)

Create Or Replace Function CDate(Datechar In Varchar2) Return Date Is
    ReallyDo Date;
Begin
    Select to_date(to_char(to_date(to_char(Datechar), 'YYYY-MM-DD HH24:MI:SS'),
                           'YYYY-MM-DD'),
                   'YYYY-MM-DD')
    Into ReallyDo
    From Dual;
    Return(ReallyDo);
End CDate;

 

Create Or Replace Function CDateTime(Datechar In Varchar2) Return Date Is
    ReallyDo Date;
Begin
    Select to_date(to_char(to_date(to_char(Datechar), 'YYYY-MM-DD HH24:MI:SS'),
                           'YYYY-MM-DD HH24:MI:SS'),
                   'YYYY-MM-DD HH24:MI:SS')
    Into ReallyDo
    From Dual;
    Return(ReallyDo);
End CDateTime;

 

Create Or Replace Function Datediff
(
    Datepart  In Varchar2,
    StartDate In Varchar2,
    EndDate   In Varchar2
) Return Number Is
    ReallyDo Numeric;
Begin
    Select Case Upper(Datepart)
               When 'YYYY' Then
                Trunc(Extract(Year From CDate(EndDate)) -
                      Extract(Year From CDate(StartDate)))
               When 'M' Then
                Datediff('YYYY', StartDate, EndDate) * 12 +
                (Extract(Month From CDate(EndDate)) -
                 Extract(Month From CDate(StartDate)))
               When 'D' Then
                Trunc(CDate(EndDate) - CDate(StartDate))
               When 'H' Then
                Datediff('D', StartDate, EndDate) * 24 +
                (to_Number(to_char(CDateTime(EndDate), 'HH24')) -
                 to_Number(to_char(CDateTime(StartDate), 'HH24')))
               When 'N' Then
                Datediff('D', StartDate, EndDate) * 24 * 60 +
                (to_Number(to_char(CDateTime(EndDate), 'MI')) -
                 to_Number(to_char(CDateTime(StartDate), 'MI')))
               When 'S' Then
                Datediff('D', StartDate, EndDate) * 24 * 60 * 60 +
                (to_Number(to_char(CDateTime(EndDate), 'SS')) -
                 to_Number(to_char(CDateTime(StartDate), 'SS')))
               Else
                -29252888
           End
    Into ReallyDo
    From Dual;
    Return(ReallyDo);
End Datediff;

 

 当然也有其他方法实现

 在ORACLE里日期类型是可以直接进行比较的。举个例子:

SQL> SELECT to_date('2011-10-05', 'yyyy-mm-dd') - to_date('2011-10-07', 'yyyy-mm-dd') FROM dual ;

TO_DATE('2011-10-05','YYYY-MM-DD')-TO_DATE('2011-10-07','YYYY-MM-DD')
---------------------------------------------------------------------
                                                                   -2

这说明2011-10-05要比7号早2天。

SQL> SELECT to_date('2011-10-07 14:23:24' , 'yyyy-mm-dd hh24:mi:ss') + 1/24 FROM dual ;

TO_DATE('2011-10-07
-------------------
2011-10-07 15:23:24

SQL>

这是说明在某一时间上加一小时,1是代表一天,1/24就是一小时,同理1/24/60就是一分钟
 

2
2
分享到:
评论

相关推荐

    Oracle datediff函数

    在Oracle数据库系统中,...总之,虽然Oracle没有内置的`DATEDIFF`函数,但通过上述方法,我们可以轻松地计算两个日期之间的差异。这显示了Oracle数据库系统的灵活性和强大功能,使其能够适应各种不同的需求和工作场景。

    Oracle中实现datadiff函数

    在Oracle数据库中,并未直接提供`DATEDIFF`函数来计算两个日期之间的差异。这与SQL Server等其他数据库系统有所不同,在那些系统中,`DATEDIFF`是一个常用且非常实用的功能。然而,在Oracle中我们可以通过自定义函数...

    vbs函数大全[归纳].pdf

    * DateDiff 函数:返回两个日期之间的间隔。 * DatePart 函数:返回给定日期的指定部分。 * DateSerial 函数:返回指定年月日的日期子类型的变体。 * DateValue 函数:返回日期子类型的变体。 逻辑运算符 * And ...

    VBA常用函数.pdf

    - DateDiff函数:计算两个日期之间的间隔。 - Second、Minute、Hour、Day、Month、Year、Weekday函数:分别返回时间或日期中的秒、分、时、日、月、年、星期几部分。 对于文件系统的操作,文档提到了如下函数和语句...

    Oracle常用函数及实例.pdf

    此外,Oracle还有日期时间函数,如SYSDATE获取当前系统日期,TO_DATE将字符串转换为日期格式,以及DATEADD和DATEDIFF等用于日期运算的函数。转换函数如TO_CHAR和TO_NUMBER分别用于将日期或数值转换为字符串和将字符...

    delphi、 sql 日期时间函数

    在实际开发中,结合使用Delphi的日期处理函数和SQL的日期时间函数,可以构建出强大的数据处理和分析系统。例如,你可能需要在Delphi程序中获取当前日期,然后将这个日期插入到MSSQL数据库中,或者根据用户输入的日期...

    VB常用函数大全[归纳].pdf

    * DateDiff:计算两个日期之间的差 * DatePart:返回某一日期某部分 目录和文件函数 VB 中提供了多种目录和文件函数,用于处理文件和目录相关的操作。常用的目录和文件函数有: * ChDir:改变当前目录 * ChDrive...

    SQLServer和Oracle常用函数对比

    - `DATEDIFF()` 计算两个日期之间的差值(天数)。 - `CONVERT()` 转换日期格式。 2. **Oracle:** - `SYSDATE` 获取当前日期和时间。 - `ADD_MONTHS()` 添加指定的月数。 - `NUMTODSINTERVAL()` 和 `TO_...

    EXCEL VBA函数精选

    7. DateDiff函数:返回两个日期之间的时间间隔数。其语法为DateDiff(interval, date1, date2, [firstdayofweek], [firstweekofyear])。 8. DatePart函数:返回日期中的指定部分,如年、月或日。其语法为DatePart...

    Access函数汇总.pdf

    16. DateDiff函数:计算两个日期之间的时间间隔。 17. DatePart函数:返回日期/时间中的特定部分,如年、月、日或时间。 18. DateSerial函数:返回指定年、月、日的日期值。 19. DateValue函数:将表达式转换为日期...

    mysqlAPI--日期和时间函数.docx

    43. TIMESTAMP():随着一个参数,这个函数返回的日期或日期时间表达式;两个参数,参数的总和 44. TIMESTAMPADD():添加时间间隔为 datetime 表达式 45. TIMESTAMPDIFF():减去的时间间隔从 datetime 表达式 46. TO_...

    Excel VBA 计算两个时间间隔, 精确到天,时,分,秒

    这里我们使用"秒"("s")作为日期间隔单位,`DateDiff`函数会返回两个日期之间相差的总秒数。如果需要精确到天、时、分、秒,我们可以分别对这个秒数进行转换: ```vba Dim days As Long Dim hours As Integer Dim ...

    MSSQL常用函数.pdf

    MSSQL常用函数的知识点涵盖了多个方面的数据库操作,包括字符处理、日期时间计算、数据类型转换等。以下是从给定文件内容中提炼出的详细知识点: 字符处理函数: 1. ASCII():返回字符表达式最左边的字符的ASCII...

    常用VBA函数精选

    7. DateDiff 函数:计算两个日期之间的差值,返回天数、小时数、分钟等,如DateDiff("d", #3/14/2023#, #3/15/2023#)返回1。 8. DatePart 函数:从日期中提取特定部分,如DatePart("yyyy", #3/15/2023#)返回2023。 ...

    SQLSERVER时间日期函数详解

    DateDiff 函数用于返回两个指定日期之间的日期和时间边界数。语法如下: DATEDIFF(interval, date1, date2) 其中,interval 是要计算的时间间隔,date1 和 date2 是要比较的两个日期。 示例: SELECT DATEDIFF...

    sql中常用函数[定义].pdf

    - DATEDIFF函数:计算两个日期之间的差异,如`DATEDIFF(DAY, '2022-12-30', '2023-01-01')`。 - DATEADD函数:在日期时间上增加指定的时间间隔,如`DATEADD(DAY, 1, '2022-12-31')`。 5. CONVERT函数:这个函数...

    sql确定两个日期之间的月份数或年数

    在进行数据分析或者处理与时间相关的业务逻辑时,经常会遇到需要计算两个日期之间的差异的问题,尤其是月份数和年数的差异。这样的需求在人力资源管理、财务分析等领域非常常见。比如,计算第一个员工和最后一个员工...

    SQL 常用函数- 时间函数

    3. **DATEDIFF()**:计算两个日期之间的差值,返回的是整数,表示两个日期之间相隔的指定时间单位的数量。例如,计算两个日期之间的天数差: ```sql SELECT DATEDIFF(day, '2022-01-01', '2022-01-31'); ``` 4. ...

Global site tag (gtag.js) - Google Analytics