zoukankan      html  css  js  c++  java
  • Oracle常用函数:DateDiff() 返回两个日期之间的时间间隔自定义函数

     1 Create Or Replace Function CDate(Datechar In Varchar2) Return Date Is  
     2     ReallyDo Date;  
     3 Begin  
     4     Select to_date(to_char(to_date(to_char(Datechar), 'YYYY-MM-DD HH24:MI:SS'),  
     5                            'YYYY-MM-DD'),  
     6                    'YYYY-MM-DD')  
     7     Into ReallyDo  
     8     From Dual;  
     9     Return(ReallyDo);  
    10 End CDate;  
    11   
    12    
    13   
    14 Create Or Replace Function CDateTime(Datechar In Varchar2) Return Date Is  
    15     ReallyDo Date;  
    16 Begin  
    17     Select to_date(to_char(to_date(to_char(Datechar), 'YYYY-MM-DD HH24:MI:SS'),  
    18                            'YYYY-MM-DD HH24:MI:SS'),  
    19                    'YYYY-MM-DD HH24:MI:SS')  
    20     Into ReallyDo  
    21     From Dual;  
    22     Return(ReallyDo);  
    23 End CDateTime;  
    24   
    25    
    26   
    27 Create Or Replace Function Datediff  
    28 (  
    29     Datepart  In Varchar2,  
    30     StartDate In Varchar2,  
    31     EndDate   In Varchar2  
    32 ) Return Number Is  
    33     ReallyDo Numeric;  
    34 Begin  
    35     Select Case Upper(Datepart)  
    36                When 'YYYY' Then  
    37                 Trunc(Extract(Year From CDate(EndDate)) -  
    38                       Extract(Year From CDate(StartDate)))  
    39                When 'M' Then  
    40                 Datediff('YYYY', StartDate, EndDate) * 12 +  
    41                 (Extract(Month From CDate(EndDate)) -  
    42                  Extract(Month From CDate(StartDate)))  
    43                When 'D' Then  
    44                 Trunc(CDate(EndDate) - CDate(StartDate))  
    45                When 'H' Then  
    46                 Datediff('D', StartDate, EndDate) * 24 +  
    47                 (to_Number(to_char(CDateTime(EndDate), 'HH24')) -  
    48                  to_Number(to_char(CDateTime(StartDate), 'HH24')))  
    49                When 'N' Then  
    50                 Datediff('D', StartDate, EndDate) * 24 * 60 +  
    51                 (to_Number(to_char(CDateTime(EndDate), 'MI')) -  
    52                  to_Number(to_char(CDateTime(StartDate), 'MI')))  
    53                When 'S' Then  
    54                 Datediff('D', StartDate, EndDate) * 24 * 60 * 60 +  
    55                 (to_Number(to_char(CDateTime(EndDate), 'SS')) -  
    56                  to_Number(to_char(CDateTime(StartDate), 'SS')))  
    57                Else  
    58                 -29252888  
    59            End  
    60     Into ReallyDo  
    61     From Dual;  
    62     Return(ReallyDo);  
    63 End Datediff;  
  • 相关阅读:
    nginx 配置优化(简单)
    Nginx 安装
    Smokeping安装教程
    test [ ] 四类
    if语句中的判断条件(nginx)
    力扣 1431. 拥有最多糖果的孩子 python
    力扣 1672. 最富有客户的资产总量+1512. 好数对的数目 python
    力扣 剑指 Offer 58
    力扣 8. 字符串转换整数 (atoi)python--每日一题
    力扣 7. 整数反转python 每日一题
  • 原文地址:https://www.cnblogs.com/lgx5/p/12786906.html
Copyright © 2011-2022 走看看