Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wyodrębnij datę z wyroczni łańcuchowej

Możesz użyć:

SELECT  TO_DATE(
          REGEXP_SUBSTR(
            'Chicago, IL, April 20, 2015 — and so on text here',
            '(JANUARY|FEBRUARY|MARCH|APRIL|MAY|JUNE|JULY|AUGUST|SEPTEMBER|'
              || 'OCTOBER|NOVEMBER|DECEMBER)'
              || '[[:space:]]+([012]?[0-9]|3[01])'
              || '[[:punct:][:space:]]+\d{4}',
            1,
            1,
            'i'
          ),
          'MONTH DD YYYY'
        )
FROM    DUAL;

Jeśli chcesz również zweryfikować daty (aby nie otrzymać błędu dla February 29, 2001 ) możesz użyć funkcji zdefiniowanej przez użytkownika:

CREATE FUNCTION parse_Date(
  in_string     VARCHAR2,
  in_format     VARCHAR2 DEFAULT 'YYYY-MM-DD',
  in_nls_params VARCHAR2 DEFAULT NULL
) RETURN DATE DETERMINISTIC
AS
BEGIN
  RETURN TO_DATE( in_string, in_format, in_nls_params );
EXCEPTION
  WHEN OTHERS THEN
    RETURN NULL;
END;
/

I zastąp TO_DATE( ... ) funkcja z PARSE_DATE( ... )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aktualizuj tylko datę w polu datetime w Pl/SQL

  2. wybierając NLS_LANG dla Oracle

  3. Oracle:procedura składowana Java wysyłająca wiadomość JMS

  4. PARTITION BY nie działa w H2 db

  5. Jak mogę wstawić do kolumny BLOB z instrukcji INSERT w sqldeveloper?