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

problem z funkcją to_date z sysdate

Chcę wyjaśnić, dlaczego otrzymujesz różne wyniki.

Zobacz ten sqlfiddle

Jak już zostało powiedziane, sysdate jest postrzegane jako DATE wpisz i wykonujesz niejawną konwersję, gdy

select to_date(sysdate, format) from dual;

ponieważ pierwszy parametr to_date powinien być typu varchar, co system robi:

select to_date(to_char(sysdate), format) from dual;

ponieważ domyślny format daty to 'DD-MON-YY' , Twoje zapytanie trafia do:

SELECT TO_CHAR(to_date('01-JAN-13', 'DD-MON-yy'), 'DAY'),
  TO_CHAR(to_date('01-JAN-13', 'DD-MON-yyyy'), 'DAY'),
  TO_CHAR(to_date('01-JAN-13', 'DD-MON-rr'), 'DAY'),
  TO_CHAR(to_date('01-JAN-13', 'DD-MON-rrrr'), 'DAY')
FROM dual;

drugi jak do tej pory, ponieważ yyyy to pełny format tysięcy lat, idzie do '01-JAN-0013', czyli 13AD i prawdopodobnie NIEDZIELA :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. regexp_substr pomija puste pozycje

  2. Jak wygenerować całe DDL schematu Oracle (skryptowalne)?

  3. Włączanie wirtualizacji w systemie BIOS w laptopie lub komputerze stacjonarnym dla maszyny wirtualnej Virtualbox

  4. Co oznacza następujący błąd Oracle:nieprawidłowy indeks kolumny

  5. Lista elementów formatu daty i godziny w Oracle