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

Jak uzyskać wiek z daty w Oracle

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ę.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Długie ciągi znaków w N-Hibernate z Oracle powodują błąd

  2. TNS-12505:TNS:listener nie zna obecnie identyfikatora SID podanego w deskryptorze połączenia

  3. Utwórz użytkownika ze zmiennych łańcuchowych w bloku PL/SQL

  4. Jak znaleźć bieżące otwarte kursory w Oracle?

  5. Funkcja NLSSORT() w Oracle