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

Jak formatować daty w Oracle

Ten artykuł zawiera typowe przykłady formatowania dat w bazie danych Oracle.

Domyślny format daty sesji jest określony przez różne parametry inicjalizacji NLS (tutaj opisano, jak je sprawdzić). Możesz skorzystać z tych parametrów, aby wygenerować formatowanie uwzględniające ustawienia regionalne.

Możesz także użyć funkcji takich jak TO_CHAR(number) konwertować daty na ciągi i formatować je dokładnie tak, jak chcesz w locie.

Domyślny format daty

Kiedy zwracasz datę w Oracle, domyślnie jest ona zwracana w domyślnym formacie daty dla bieżącej sesji.

Przykład:

SELECT DATE '2030-12-10' FROM DUAL;

Wynik:

10/DEC/30

W tym przypadku domyślny format daty mojej sesji to DD/MON/RR , a więc wynik to odzwierciedla.

Możesz zmienić format, zmieniając NLS_TERRITORY parametr (który niejawnie zmienia inne parametry, takie jak parametry daty i godziny) lub zmiana NLS_DATE_FORMAT parametr bezpośrednio.

Oto, co się stanie, gdy zmienię NLS_TERRITORY parametr do innego terytorium:

ALTER SESSION SET NLS_TERRITORY = 'Germany';
SELECT DATE '2030-12-10' FROM DUAL;

Wynik:

10.12.30

Domyślny format daty został zaktualizowany, aby odzwierciedlał format dla tego języka.

Istnieją również inne parametry NLS typu datetime, takie jak NLS_TIME_FORMAT , NLS_TIME_TZ_FORMAT , NLS_TIMESTAMP_FORMAT i NLS_TIMESTAMP_TZ_FORMAT musisz być świadomy podczas zmiany formatów daty i godziny.

Zobacz także Jak zmienić format daty sesji, jeśli chcesz zmienić domyślny format daty i godziny dla bieżącej sesji.

TO_CHAR() Funkcja

Ton TO_CHAR(datetime) funkcja przyjmuje wartość daty/godziny i zwraca ciąg sformatowany w określony sposób.

Oto krótki przykład:

SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;

Wynik:

Wed, 26 September 2035

Tutaj funkcja zwróciła datę podaną w pierwszym argumencie, w formacie określonym przez drugi argument.

Drugi argument dostarcza model formatu. Model formatu może składać się z co najmniej jednego elementu formatu. Na przykład Dy jest elementem formatu, tak jak DD , Month itp.

Jeśli nie określisz formatu, zostanie on zwrócony przy użyciu domyślnego formatu sesji.

Zobacz pełną listę elementów formatu daty i godziny w Oracle, aby uzyskać listę elementów formatu, których można użyć do formatowania wartości daty i godziny za pomocą tej funkcji.

Poniżej znajdują się bardziej szczegółowe przykłady.

Zwróć nazwę dnia

W razie potrzeby możesz zwrócić poszczególne części daty. Na przykład możesz zwrócić tylko nazwę dnia, tylko nazwę miesiąca itp. Wszystko, co musisz zrobić, to użyć odpowiedniego elementu formatu jako jedynego elementu formatu w Twoim modelu formatu.

Oto przykład zwracania nazwy dnia:

SELECT TO_CHAR(DATE '2035-09-26', 'Day')
FROM DUAL;

Wynik:

Wednesday

W tym przypadku zwróciłem pełną nazwę dnia.

Możemy użyć Dy jak we wcześniejszym przykładzie, aby zwrócić krótką nazwę dnia:

SELECT TO_CHAR(DATE '2035-09-26', 'Dy')
FROM DUAL;

Wynik:

Wed

Zwróć nazwę miesiąca

Oto przykład zwracania nazwy miesiąca:

SELECT TO_CHAR(DATE '2035-09-26', 'Month')
FROM DUAL;

Wynik:

September

I krótka nazwa miesiąca:

SELECT TO_CHAR(DATE '2035-09-26', 'Mon')
FROM DUAL;

Wynik:

Sep

Wrażliwość na wielkość liter

W poprzednich przykładach pierwszą literę nazwy dnia i miesiąca zapisaliśmy wielką literą.

Alternatywnie możemy użyć wszystkich wielkich liter, aby zwrócić nazwy dnia i miesiąca wielkimi literami, a wszystkich małych, aby zwrócić je małymi literami.

SELECT 
    TO_CHAR(DATE '2035-09-26', 'DY, Dy, dy')
FROM DUAL
UNION ALL
SELECT 
    TO_CHAR(DATE '2035-09-26', 'DAY, Day, day')
FROM DUAL
UNION ALL
SELECT 
    TO_CHAR(DATE '2035-09-26', 'MON, Mon, mon')
FROM DUAL
UNION ALL
SELECT 
    TO_CHAR(DATE '2035-09-26', 'MONTH, Month, month')
FROM DUAL;

Wynik:

WED, Wed, wed                           
WEDNESDAY, Wednesday, wednesday         
SEP, Sep, sep                           
SEPTEMBER, September, september         

Język

NLS_DATE_LANGUAGE parametr służy do określenia języka części dat, które są przeliterowane (takich jak nazwy dni i nazwy miesięcy). Domyślna wartość tego parametru pochodzi z języka NLS_LANGUAGE parametr.

Oto przykład aktualizacji NLS_DATE_LANGUAGE parametr, a następnie zwrócenie sformatowanej daty zawierającej nazwę dnia i nazwę miesiąca:

ALTER SESSION SET NLS_DATE_LANGUAGE = 'Spanish';
SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
FROM DUAL;

Wynik:

Mié, 26 Septiembre 2035

Język można również jawnie określić z poziomu TO_CHAR() sama funkcja. W ten sposób możesz tymczasowo zastąpić domyślne ustawienia języka dla bieżącej sesji, bez wpływu na te ustawienia.

Przykład:

ALTER SESSION SET NLS_DATE_LANGUAGE = 'English';
SELECT TO_CHAR(
    DATE '2035-09-26', 
    'Dy, DD Month YYYY',
    'NLS_DATE_LANGUAGE = Spanish'
    )
FROM DUAL;

Wynik:

Mié, 26 Septiembre 2035

W tym przykładzie ustawiłem bieżącą sesję na język angielski, a następnie uruchomiłem zapytanie, aby wyświetlić datę w języku hiszpańskim.

Jak wcześniej wspomniano, wypisywanie daty w języku hiszpańskim nie miało wpływu na ustawienie języka angielskiego. Aby to zademonstrować, uruchomiłem następujące zapytanie bezpośrednio po nim (bez zmiany NLS_DATE_LANGUAGE parametr).

SELECT TO_CHAR(
    DATE '2035-09-26', 
    'Dy, DD Month YYYY'
    )
FROM DUAL;

Wynik:

Wed, 26 September 2035

Zgodnie z oczekiwaniami wynik jest w języku angielskim, który jest domyślnym językiem bieżącej sesji.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak pisać zapytania sql

  2. PL/SQL:jak monitować użytkownika o wprowadzenie danych w procedurze?

  3. Sprawdzanie składni SQL online zgodne z wieloma bazami danych

  4. R12.2 Podsumowanie cyklu aktualizacji online

  5. Monitor zmiany tabeli Oracle