W Oracle Database możemy użyć TO_CHAR(datetime)
funkcja zwracająca wiek z wartości daty i godziny.
Aby to zrobić, możemy użyć CC
element formatu lub SCC
element formatu. Możemy łączyć je z innymi elementami formatu, aby robić takie rzeczy, jak wyświetlanie liczby porządkowej, określanie wieku itp.
Przykład
Oto przykład, który używa CC
element formatu do zwrócenia wieku z wartości daty:
SELECT TO_CHAR(DATE '2030-12-30', 'CC')
FROM DUAL;
Wynik:
21
negatywne stulecia
Możemy użyć SCC
element formatu zawierający znak minus podczas przekazywania daty ujemnej:
SELECT TO_CHAR(DATE '-2030-12-30', 'SCC')
FROM DUAL;
Wynik:
-21
Liczba porządkowa
Możemy dodać TH
element formatu, aby zwrócić liczbę porządkową wieku.
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH')
FROM DUAL;
Wynik:
21ST
Możemy również dodać dowolny tekst, aby dołączyć słowo „Century”:
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH "Century"')
FROM DUAL;
Wynik:
21ST Century
Zwróć uwagę, że tekst jest otoczony podwójnymi cudzysłowami.
W razie potrzeby możemy użyć wielkich liter:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccth "Century"')
FROM DUAL;
Wynik:
21st Century
Zauważ, że w modelu formatu zapisałem wielką literą tylko pierwszy znak. Mam na myśli to, że użyłem Ccth
zamiast CCth
. Chociaż możesz pomyśleć, że CCth
powinno skutkować małą liczbą porządkową, to nie tak to działa. Oto, co się dzieje, gdy to robimy:
SELECT TO_CHAR(DATE '2030-12-30', 'CCth "Century"')
FROM DUAL;
Wynik:
21ST Century
Zasadniczo, gdy pierwsze dwa znaki modelu formatu są wielkimi literami, wynikiem są wielkie litery. Dlatego, aby utworzyć wielkość liter, pisz tylko pierwszy znak modelu formatu.
Wiek ortografii
Możemy dodać SP
element formatu, aby określić wiek:
SELECT TO_CHAR(DATE '2030-12-30', 'CCTHSP "Century"')
FROM DUAL;
Wynik:
TWENTY-FIRST Century
W razie potrzeby możemy używać wielkich liter:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccthsp "Century"')
FROM DUAL;
Wynik:
Twenty-First Century
Możemy pominąć TH
specyfikator formatu, jeśli nie chcemy liczby porządkowej:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccsp')
FROM DUAL;
Wynik:
Twenty-One
XX i XXI wiek
Poniższe zasady mają zastosowanie w odniesieniu do daty uważanej za wiek XX i wiek XXI.
- Jeśli ostatnie 2 cyfry 4-cyfrowego roku mieszczą się w zakresie od 01 do 99 (włącznie), to wiek jest o jeden większy niż pierwsze 2 cyfry tego roku.
- Jeśli ostatnie 2 cyfry 4-cyfrowego roku to 00, wiek jest taki sam jak pierwsze 2 cyfry tego roku.
Ta sama koncepcja dotyczy innych wieków, takich jak XIII wiek, 30 wiek itd.
Przykład:
SELECT
TO_CHAR(DATE '1999-12-30', 'CC') AS "1999",
TO_CHAR(DATE '2000-12-30', 'CC') AS "2000",
TO_CHAR(DATE '1299-12-30', 'CC') AS "1299",
TO_CHAR(DATE '1300-12-30', 'CC') AS "1300",
TO_CHAR(DATE '2999-12-30', 'CC') AS "2999",
TO_CHAR(DATE '3000-12-30', 'CC') AS "3000"
FROM DUAL;
Wynik:
1999 2000 1299 1300 2999 3000 _______ _______ _______ _______ _______ _______ 20 20 13 13 30 30
Istnieje wiele innych elementów formatu dostępnych do formatowania wartości daty i godziny w Oracle. Zobacz listę elementów formatu daty i godziny w Oracle, aby uzyskać pełną listę.