С 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 за пълен списък.