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

Różne daty Oracle 11g z TOAD

W obu wersjach wykonujesz wiele niejawnych konwersji dat. To:

SELECT to_date(to_char(to_date('01-FEB-1949'))) FROM DUAL; 

jest równoważne z:

SELECT to_date(to_char(to_date('01-FEB-1949', <NLS_DATE_FORMAT>),
    <NLS_DATE_FORMAT>, <NLS_DATE_FORMAT>)) FROM DUAL;

podczas gdy drugie zapytanie ma jedno z nich zastąpione określonym formatem. Wygląda na twój domyślny format - który możesz ustawić, jak sądzę, w preferencjach Toad bez bezpośredniej modyfikacji rejestru; nie jest jasne, czy modyfikujesz coś związanego z ropuchą - jest to DD-MON-RR , jak pokazano, podłączając to do tych zapytań:

SELECT to_date(to_char(to_date('01-FEB-1949','DD-MON-RR'),
        'DD-MON-RR'),'DD-MON-RR') AS date1,
    to_date(to_char(to_date('01-FEB-1949','DD-MON-RR'),
        'dd-MON-yyyy'),'DD-MON-RR') AS date2 FROM DUAL;

DATE1                            DATE2
February, 01 2049 00:00:00+0000  February, 01 1949 00:00:00+0000

(SQL Fiddle )

Możesz zobaczyć te SQL Fiddle że w pierwszej wersji data pojawia się jako ciąg z rokiem jako 49 zamiast 1949 , a to jest następnie interpretowane - przez RR maska ​​- jako 2049 , czyli oczekiwane zachowanie.

Wersja skrócona:nigdy nie polegaj na niejawnej konwersji daty lub masce formatu daty NLS.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy ODP.NET jest wymagany dla klienta Oracle 11g?

  2. Używanie parametrów z połączeniem Oracle ODBC

  3. Jak przekonwertować datę zapisaną jako VARCHAR2 na „MM/DD/RRRR HH24:MI:SS”?

  4. Łączenie danych z 5 tabel bez duplikatów wartości i uzyskiwanie wyniku z niestandardowym statusem w Oracle 10g

  5. Funkcja COMPOSE() w Oracle