您现在的位置是:首页
>
表格日期格式转换不了 从Unix到Oracle的日期转换
从U ix到Oracle的日期转换 CREATE OR REPLACE FUNCTION U ix_To_Oracle_Date _u ix_date IN NUMBER Ra g
从Unix到Oracle的日期转换

CREATE OR REPLACE FUNCTION Unix_To_Oracle_Date ( p_unix_date IN NUMBER Range of >= p_num_hr_gmt_diff IN PLS_INTEGER Range of to + ) RETURN DATE AS CONSTANTS These CONSTANTS below are of POSITIVE type to indicate that they CANNOT be less than c_SECONDS_IN_DAY CONSTANT POSITIVE := ; c_HOURS_IN_DAY CONSTANT POSITIVE := ; c_UNIX_EPOCH_DATE_TIME_STRING CONSTANT VARCHAR ( ) := / / : : ; c_DATE_FORMAT CONSTANT VARCHAR ( ) := MM/DD/YYYY HH :MI:SS ; VARIABLES v_sql_code PLS_INTEGER; v_sql_error_message VARCHAR ( ); The 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; lishixinzhi/Article/program/Oracle/201311/16933
很赞哦! (1035)