Oracle
 sql >> база данни >  >> RDS >> Oracle

Различни дати Oracle 11g с TOAD

Правите множество неявни преобразувания на дати и в двете версии. Това:

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

е еквивалентно на:

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

докато втората заявка има един от тези, заменен с конкретен формат. Изглежда като вашия формат по подразбиране - който можете да зададете, според мен, в предпочитанията на Toad, без да променяте директно регистъра; не е ясно дали изобщо променяте нещо, свързано с Toad - е DD-MON-RR , както е показано чрез включване на това в тези заявки:

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 )

Можете да видите в този SQL Fiddle че в първата версия датата се появява като низ с година като 49 вместо 1949 и след това се интерпретира - от RR маска - като 2049 , което е очакваното поведение.

Кратка версия:никога не разчитайте на имплицитни преобразувания на дата или на маската за формат на дата 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. Oracle връща същия псевдоним за различни случаи при избор

  2. Сортиране по ден от седмицата от понеделник до неделя

  3. Как да разберете дали дадена стойност съществува в рамките на VARRAY

  4. Определете дали датата на Oracle е в уикенд?

  5. Oracle Dynamic Pivoting