国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

從Unix到Oracle的日期轉換

2024-08-29 13:36:24
字體:
來源:轉載
供稿:網友

  CREATE OR REPLACE FUNCTION Unix_To_Oracle_Date
  (
    p_unix_date IN NUMBER, -- Range of >= 0
    p_num_hr_gmt_diff IN PLS_INTEGER  -- Range of -24 to +24
  
  ) RETURN DATE AS
  
  /*
    Function Name:  Unix_To_Oracle_Date
  
    Purpose:     To calculate an Oracle date based on a Unix GMT date
             in seconds, since the epoch of Unix (January 1st, 1970).
  
             The date returned will be based on the number of hours
             the oracle database system clock is either ahead or behind
             the Greenwich Mean Time line.
  
             If the parameters do not fall within the specified ranges
             then the returned date will be NULL.
  
    Developer Name:  Giovanni Jaramillo
    Developer Email: Giovanni@CheckOut.com
    Creation Date:  Copyright ? CheckOut.com December 2, 1999
  
    Parameters:    p_unix_date of NUMBER type (Range is > 0 only)
             p_num_hr_gmt_diff of PLS_INTEGER type (Range -24 to +24)
  
    Input:      NONE
    Output:      NONE
    Returned value:  DATE := Unix_To_Oracle_Date(p_Unix_Date);
  
  */
  
    -- CONSTANTS
  
    -- These 2 CONSTANTS below are of POSITIVE type to indicate that they
    -- CANNOT be less than 1
  
    c_SECONDS_IN_DAY CONSTANT POSITIVE := 86400;
    c_HOURS_IN_DAY CONSTANT POSITIVE := 24;
  
  
    c_UNIX_EPOCH_DATE_TIME_STRING CONSTANT VARCHAR2(50) := '01/01/1970 00:00:00';
    c_DATE_FORMAT CONSTANT VARCHAR2(50) := 'MM/DD/YYYY HH24:MI:SS';
  
    -- VARIABLES
  
    v_sql_code PLS_INTEGER;
    v_sql_error_message VARCHAR2(512);
  
    -- The 2 variables have to be of NUMBER type because a PLS_INTEGER divided by
    -- another PLS_INTEGER can result in a fraction, thus the result must be of
    -- NUMBER type only
  
    v_unix_seconds NUMBER;
    v_gmt_time_gap NUMBER;
  
    v_return_value DATE;
  
  BEGIN
  
    IF(NOT (p_num_hr_gmt_diff < (-c_HOURS_IN_DAY)) AND
     NOT (p_num_hr_gmt_diff > (c_HOURS_IN_DAY))) THEN
  
     v_unix_seconds := (p_unix_date / c_SECONDS_IN_DAY);
     v_gmt_time_gap := (p_num_hr_gmt_diff / c_HOURS_IN_DAY);
  
     v_return_value := TO_DATE(c_UNIX_EPOCH_DATE_TIME_STRING, c_DATE_FORMAT) +
              v_unix_seconds + v_gmt_time_gap;
    ELSE
     v_return_value := NULL;
    END IF;
  
    RETURN(v_return_value);
  
  EXCEPTION
  
    WHEN OTHERS THEN
     v_sql_code := SQLCODE;
     v_sql_error_message := SQLERRM(v_sql_code);

  
     DBMS_OUTPUT.PUT_LINE('OTHER ERROR');
     DBMS_OUTPUT.PUT_LINE(v_sql_error_message);
  
  END Unix_To_Oracle_Date;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仁寿县| 云和县| 钦州市| 那曲县| 屯留县| 刚察县| 桓台县| 樟树市| 仙居县| 叙永县| 庆阳市| 盐源县| 称多县| 鸡泽县| 农安县| 五家渠市| 恭城| 汝南县| 安庆市| 高邑县| 巴青县| 和田县| 浦东新区| 宣威市| 图木舒克市| 苏州市| 邵武市| 庆云县| 洮南市| 绍兴县| 延吉市| 绥阳县| 永仁县| 济阳县| 武城县| 洞头县| 五华县| 宁武县| 民和| 兴国县| 北辰区|