`

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
分享到:
评论

相关推荐

    经常使用到的ASP常用函数汇总

     函数说明: 返回两个日期之间的差值 。  语法格式: DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear>>)  参数说明: timeinterval 表示相隔时间的类型,如"M"表示"月"。  代码范例: ...

    Access常用内置SQL函数

    一、Access常用内置SQL函数---日期时间函数 1.CDate 说明:将字符串转化成为日期 举例:select CDate("2008/4/5") 2.Date 说明:返回当前日期 举例:select Date() 3.DateAdd 说明:将指定日期加上某个日期 举例:...

    Oracle datediff函数

    datediff函数一般很多人都会用,但是oracle中没有datediff函数,因此想使用的话,一般需要在里面建立一个类似的。 附件是datediff的函数方法。

    javascritp 日期加减、间隔函数源码

    VBScript中有两个非常好用的日期操作函数:DateAdd用来添加指定时间间隔,DateDiff用来返回时间间隔。可惜的是JavaScript没有,各写了一个函数来实现。希望对大家有用。

    hive函数大全(中文版)

    5. 日期时间转日期函数: to_date 19 6. 日期转年函数: year 19 7. 日期转月函数: month 19 8. 日期转天函数: day 19 9. 日期转小时函数: hour 20 10. 日期转分钟函数: minute 20 11. 日期转秒函数: second 20 12. ...

    SQL Server日期加减函数DATEDIFF与DATEADD用法分析

    DATEDIFF: 返回跨两个指定日期的日期边界数和时间边界数, 语法:DATEDIFF ( datepart , startdate , enddate ) 用 enddate 减去 startdate 注:datepart 指定应在日期的哪一部分计算差额的参数,其日期相减时,只关注...

    Oracle中实现datadiff函数

    首先在oracle中没有datediff()函数 可以用这个方法在oracle中实现该函数的功能。

    归纳总结-sql常见函数-介绍说明与实际案例语句

    日期函数:用于处理日期和时间,如GETDATE()、DATEADD()、DATEDIFF()等。 数学函数:用于执行算术运算,如ROUND()、ABS()、SQRT()等。 聚合函数: SELECT COUNT(*) FROM employees;:计算employees表中的记录数。 ...

    ASP 中 DateDiff 函数详解 主要实现两日期加减操作

    ASP 中 DateDiff 函数详解DateDiff 函数 描述 返回两个日期之间的时间间隔。 语法 DateDiff(interval, date1, date2 [,firstdayofweek][, firstweekofyear]]) DateDiff 函数的语法有以下参数: 参数...

    模拟SQLSERVER的两个函数:dateadd(),datediff()

    php//文件名:date.inc.php3//在使用这两个函数前,要先将日期或日期时间转换成timestamp类型。//如://$today=mktime(0,0,0,date("m"),date("d"),date("Y"));/****模拟sqlserver中的dateadd函数*******$part 类型:...

    JavaScript版DateAdd和DateDiff函数代码

    VBScript中有两个非常好用的日期操作函数:DateAdd用来给日期添加指定时间间隔,DateDiff用来返回两个日期的时间间隔。可惜的是JavaScript没有,不过我们可以写一个函数来实现,一样的,呵呵

    SQLSERVER时间日期函数详解

    提供SQLSERVER常用的时间日期函数。 比如:getdate()、dateadd()、datediff(),还带有示例讲解,希望对各位有帮助!

    hdongix c++

    3. datediff 返回跨两个指定日期的日期和时间边界数。 select datediff(day,'2004-09-01','2004-09-18') --返回:17 select datediff(day,'2004-09-18','2004-09-01') --返回:-17 4. datepart 返回代表指定日期的...

    VBSCRIP5 -ASP用法详解

    DateDiff 函数 返回两个日期之间的间隔。 DatePart 函数 返回给定日期 的指定部分。 DateSerial 函数 返回指定年月日的 日期子类型的变体 。 DateValue 函数 返回日期子类型的变体 。 Day 函数 返回日期,取值...

    SQL自定义函数...ppt

    日期和时间函数 GETDATE():返回当前系统日期和时间。 DATEADD(datepart , number, date):在date值上加上... DATEDIFF(datepart , startdate , enddate):返回跨两个指定日期的日期和时间边界数。

    用javascript实现计算两个日期的间隔天数

    代码如下:// 计算两个日期的间隔天数 function DateDiff(sDate1, sDate2){ //sDate1和sDate2是2002-12-18格式 var aDate, oDate1, oDate2, iDays aDate = sDate1.split(“-“) oDate1 = new Date...

    js版DateDiff, DateAdd, DatePart等日期数据扩展函数,非常实用

    js版DateDiff, DateAdd, DatePart等日期数据扩展函数,非常实用

    VBSCRIPT中文手册

    DateDiff 函数 返回两个日期之间的间隔。 DatePart 函数 返回给定日期 的指定部分。 DateSerial 函数 返回指定年月日的 日期子类型的变体 。 DateValue 函数 返回日期子类型的变体 。 Day 函数 返回日期,取值...

    vb Script参考文档

    DateDiff 函数 返回两个日期之间的间隔。 DatePart 函数 返回给定日期 的指定部分。 DateSerial 函数 返回指定年月日的 日期子类型的变体 。 DateValue 函数 返回日期子类型的变体 。 Day 函数 返回日期,取值...

    VBScript 语言参考

    DateDiff 函数 返回两个日期之间的间隔。 DatePart 函数 返回给定日期 的指定部分。 DateSerial 函数 返回指定年月日的 日期子类型的变体 。 DateValue 函数 返回日期子类型的变体 。 Day 函数 返回日期,取值...

Global site tag (gtag.js) - Google Analytics