Oracle time format conversion Exception Handling Function
- Create Or Replace FunctionF_FORMAT_DATE (v_date varchar2, formatVarchar)
- /*
- Time Format processing format
- */
- Return Date
- As
- V_endDateDate;
- V_rn varchar2 (2 );
- V_LAST_DATE VARCHAR2 (10 );
- Y VARCHAR2 (4 );
- M VARCHAR2 (4 );
- D VARCHAR2 (4 );
- H VARCHAR2 (4 );
- MI VARCHAR2 (2 );
- S VARCHAR2 (2 );
- M_count number;
- Str_date varchar2 (20 );
- Begin
- Str_date: = v_date;
- SELECTTO_CHAR (str_date)INTOV_endDateFROMDUAL;
- RETURNV_endDate;
- EXCEPTION
- WHENOTHERSTHEN
- Begin
- IF v_dateIS NULL THEN
- RETURN '';
- ENDIF;
- If length (TRIM (v_date) <4THEN
- RETURN '';
- ENDIF;
- If length (str_date) <14THEN
- Str_date: = rpad (trim (v_date), 14,'0');
- Elsif length (str_date)> 14THEN
- Str_date: = substr (str_date, 1, 14 );
- ENDIF;
- Y: = SUBSTR (str_date, 1, 4 );
- M: = SUBSTR (str_date, 5, 2 );
- D: = SUBSTR (str_date, 7,2 );
- H: = SUBSTR (str_date, 9, 2 );
- MI: = SUBSTR (str_date, 11,2 );
- S: = SUBSTR (str_date, 13, 2 );
- SELECTLengthb (m)IntoM_COUNTFROMDUAL;
- IF M_COUNT> 2THEN
- SelectTo_date (str_date)IntoV_endDateFromDual;
- ReturnV_endDate;
- ENDIF;
- -- Get whether the current year is renewed
- SelectDecode (to_char (last_day (trunc (to_date (substr (str_date, 1, 4) |'123','Yyyy-mm-dd'),'Y') + 31 ),'Dd'),'29','Rn','Pn')IntoV_rnFromDual;
-
- IF TO_NUMBER (M)> 12THEN
- M: ='12';
- ELSIF TO_NUMBER (M) <1THEN
- M: ='01';
- ENDIF;
- IF TO_NUMBER (D) <1THEN
- D: ='01';
- ELSIF TO_NUMBER (D)> 28THEN
- -- Get the last day of the month
- SELECTTO_CHAR (last_day (to_date (Y | M |'01','Yyyy-mm-dd')),'Yyyymmdd')INTOV_LAST_DATEFROMDUAL;
- IF TO_NUMBER (SUBSTR (V_LAST_DATE, 7,2) <TO_NUMBER (D)THEN
- D: = SUBSTR (V_LAST_DATE, 7,2 );
- ENDIF;
- ENDIF;
- IF TO_NUMBER (H)> 23THEN
- H: ='23';
- ELSIF TO_NUMBER (H) <1THEN
- H: ='01';
- ENDIF;
- IF TO_NUMBER (MI)> 59THEN
- H: ='59';
- ELSIF TO_NUMBER (MI) <0THEN
- MI: ='00';
- ENDIF;
- IF TO_NUMBER (S)> 59THEN
- S: ='59';
- ELSIF TO_NUMBER (S) <0THEN
- S: ='00';
- ENDIF;
- Str_date: = Y | M | D | H | MI | S;
- -- Dbms_output.put_line (str_date );
- SelectTo_date (str_date,'Yyyymmddhh24miss')IntoV_endDateFromDual;
- ReturnV_endDate;
- EXCEPTION
- WHENOTHERS
- THEN
- Return '';
- End;
- End;
Example: to_date (XXX, 'yyyy-mm-dd ')