Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да получите века от дата в Oracle

С Oracle Database можем да използваме TO_CHAR(datetime) функция за връщане на века от стойност за дата и час.

За да направим това, можем да използваме или CC форматен елемент или SCC форматен елемент. Можем да ги комбинираме с други елементи на формат, за да правим неща като показване на поредния номер, изписване на века и т.н.

Пример

Ето пример, който използва CC формат елемент за връщане на века от стойност на дата:

SELECT TO_CHAR(DATE '2030-12-30', 'CC')
FROM DUAL;

Резултат:

21

Отрицателни векове

Можем да използваме SCC форматен елемент, за да включи знака минус при преминаване на отрицателна дата:

SELECT TO_CHAR(DATE '-2030-12-30', 'SCC')
FROM DUAL;

Резултат:

-21

Пореден номер

Можем да добавим TH форматен елемент за връщане на поредния номер на века.

SELECT TO_CHAR(DATE '2030-12-30', 'CCTH')
FROM DUAL;

Резултат:

21ST

Можем също да добавим произволен текст, за да добавим думата „Век“:

SELECT TO_CHAR(DATE '2030-12-30', 'CCTH "Century"')
FROM DUAL;

Резултат:

21ST Century

Имайте предвид, че текстът е заобиколен от двойни кавички.

Можем да използваме главни букви според изискванията:

SELECT TO_CHAR(DATE '2030-12-30', 'Ccth "Century"')
FROM DUAL;

Резултат:

21ST Century

Забележете, че написах само първия знак във форматния модел. Имам предвид, че използвах Ccth вместо CCth . Докато може би си мислите, че CCth трябва да доведе до редовен номер с малки букви, не работи така. Ето какво се случва, когато направим това:

SELECT TO_CHAR(DATE '2030-12-30', 'CCth "Century"')
FROM DUAL;

Резултат:

21ST Century

По принцип, когато първите два знака на модела на формат са главни, резултатът е главни. Следователно, за да създадете главни букви, изписвайте само първия знак от модела на формат.

Спелен век

Можем да добавим SP форматен елемент, за да бъде изписан векът:

SELECT TO_CHAR(DATE '2030-12-30', 'CCTHSP "Century"')
FROM DUAL;

Резултат:

TWENTY-FIRST Century

И можем да използваме главни букви, както е необходимо:

SELECT TO_CHAR(DATE '2030-12-30', 'Ccthsp "Century"')
FROM DUAL;

Резултат:

Twenty-First Century

Можем да пропуснем TH спецификатор на формат, ако не искаме поредния номер:

SELECT TO_CHAR(DATE '2030-12-30', 'Ccsp')
FROM DUAL;

Резултат:

Twenty-One

20-ти срещу 21-ви век

Следните правила се прилагат по отношение на това кога дадена дата се счита за 20-ти век спрямо 21-ви век.

  • Ако последните 2 цифри на 4-цифрена година са между 01 и 99 (включително), тогава векът е с една по-голям от първите 2 цифри на тази година.
  • Ако последните 2 цифри на 4-цифрена година са 00, тогава векът е същият като първите 2 цифри от тази година.

Същата концепция важи и за други векове, като 13-ти век, 30-ти век и т.н.

Пример:

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;

Резултат:

   1999    2000    1299    1300    2999    3000 
_______ _______ _______ _______ _______ _______ 
20      20      13      13      30      30     

Има много повече форматни елементи, налични за форматиране на стойности за дата и час в Oracle. Вижте Списък с елементи на формат за дата и време в Oracle за пълен списък.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разрешите ORA-29285:грешка при запис на файл

  2. Oracle Cloud:Създаване на база данни за автономна обработка на транзакции (ATP).

  3. Последна дума в изречение:В SQL (възможни са регулярни изрази?)

  4. Как да премахнете крайните интервали след името на месеца в Oracle

  5. Разделяне на низ, разделен със запетая, в съхранена в PL/SQL процедура