Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Periksa format TANGGAL di Oracle

Buat fungsi yang ditentukan pengguna dan coba uraikan tanggalnya; jika ada pengecualian, ambil dan kembalikan string default Anda.

CREATE FUNCTION check_Date (
  datestring    VARCHAR2,
  format_mask   VARCHAR2 := 'FXMMDDYYYY',
  default_value VARCHAR2 := '00000000'
) RETURN VARCHAR2 DETERMINISTIC
IS
  INVALID_DATE EXCEPTION;
  PRAGMA EXCEPTION_INIT( INVALID_DATE, -20001 );

  p_date DATE;
BEGIN
  IF datestring IS NULL THEN
    RAISE INVALID_DATE;
  END IF;

  p_date := TO_DATE( datestring, format_mask );

  RETURN datestring;
EXCEPTION
  WHEN OTHERS THEN
    RETURN default_value;
END check_Date;
/

Alternatif :

SELECT CASE
       WHEN NOT REGEXP_LIKE( datestring, '^(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{4}$' )
       THEN '00000000'
       WHEN TO_CHAR(
              ADD_MONTHS(
                TRUNC( TO_DATE( SUBSTR( datestring, 5 ), 'YYYY' ), 'YYYY' ),
                TO_NUMBER( SUBSTR( datestring, 1, 2 ) ) - 1
              )
              + TO_NUMBER( SUBSTR( datestring, 3, 2 ) ) - 1,
              'MMDDYYYY'
            )
            <> datestring
       THEN '00000000'
       ELSE datestring
       END
FROM   your_table


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Singkirkan dari satu kolom nilai duplikat dalam dua kolom pilih

  2. Apakah kursor database mengambil perubahan pada data yang mendasarinya?

  3. Mengikuti permintaan yang memberikan dampak pemanfaatan CPU DB, dapatkah saya mengurangi data dalam tabel akan membantu saya mengurangi kinerja CPU DB

  4. klausa OVER di Oracle

  5. Oracle Pilih Dimana Tanggal Antara Hari Ini