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.