Com o Oracle Database, podemos usar o
TO_CHAR(datetime)
função para retornar o século de um valor de data e hora. Para fazer isso, podemos usar o
CC
elemento de formato, ou o SCC
elemento de formato. Podemos combiná-los com outros elementos de formato para fazer coisas como exibir o número ordinal, soletrar o século, etc. Exemplo
Aqui está um exemplo que usa o
CC
elemento de formato para retornar o século de um valor de data:SELECT TO_CHAR(DATE '2030-12-30', 'CC')
FROM DUAL;
Resultado:
21
Séculos negativos
Podemos usar o
SCC
elemento de formato para incluir o sinal de menos ao passar uma data negativa:SELECT TO_CHAR(DATE '-2030-12-30', 'SCC')
FROM DUAL;
Resultado:
-21
Número Ordinal
Podemos adicionar o
TH
elemento de formato para retornar o número ordinal do século. SELECT TO_CHAR(DATE '2030-12-30', 'CCTH')
FROM DUAL;
Resultado:
21ST
Também podemos adicionar texto arbitrário para anexar a palavra “Century”:
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH "Century"')
FROM DUAL;
Resultado:
21ST Century
Observe que o texto está entre aspas duplas.
Podemos usar maiúsculas conforme necessário:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccth "Century"')
FROM DUAL;
Resultado:
21ST Century
Observe que eu apenas capitalizei o primeiro caractere no modelo de formato. O que quero dizer é que usei
Ccth
em vez de CCth
. Embora você possa pensar que CCth
deve resultar em número ordinal minúsculo, não é assim que funciona. Veja o que acontece quando fazemos isso:SELECT TO_CHAR(DATE '2030-12-30', 'CCth "Century"')
FROM DUAL;
Resultado:
21ST Century
Basicamente, quando os dois primeiros caracteres do modelo de formato são maiúsculos, o resultado é maiúsculo. Portanto, para produzir maiúsculas e minúsculas, coloque em maiúscula apenas o primeiro caractere do modelo de formato.
Século soletrado
Podemos adicionar o
SP
elemento de formato para ter o século soletrado:SELECT TO_CHAR(DATE '2030-12-30', 'CCTHSP "Century"')
FROM DUAL;
Resultado:
TWENTY-FIRST Century
E podemos usar letras maiúsculas conforme necessário:
SELECT TO_CHAR(DATE '2030-12-30', 'Ccthsp "Century"')
FROM DUAL;
Resultado:
Twenty-First Century
Podemos omitir o
TH
especificador de formato se não quisermos o número ordinal:SELECT TO_CHAR(DATE '2030-12-30', 'Ccsp')
FROM DUAL;
Resultado:
Twenty-One
Séculos 20 vs 21
As seguintes regras se aplicam quando uma data é considerada no século 20 versus o século 21.
- Se os dois últimos dígitos de um ano de quatro dígitos estiverem entre 01 e 99 (inclusive), o século será um a mais que os dois primeiros dígitos desse ano.
- Se os dois últimos dígitos de um ano de quatro dígitos forem 00, o século será igual aos dois primeiros dígitos desse ano.
O mesmo conceito se aplica a outros séculos, como o século 13, século 30, etc.
Exemplo:
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;
Resultado:
1999 2000 1299 1300 2999 3000 _______ _______ _______ _______ _______ _______ 20 20 13 13 30 30
Há muitos outros elementos de formato disponíveis para formatar valores de data e hora no Oracle. Consulte Lista de elementos de formato de data e hora no Oracle para obter uma lista completa.