sql >> データベース >  >> RDS >> Oracle

Oracleの日付形式を確認してください

    ユーザー定義関数を作成し、日付の解析を試みます。例外がある場合は、それらをキャプチャしてデフォルトの文字列を返します。

    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;
    /
    

    代替

    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. ClientDataSetTBCDFieldの丸め

    2. スキーマとデータの両方のスクリプトを生成する

    3. jdbctemplateを介したSQL挿入からのID

    4. PostgreSQLからRへのファイルのインポート