Avec Oracle Database, nous pouvons utiliser le TO_CHAR(datetime)
fonction pour renvoyer le siècle à partir d'une valeur datetime.
Pour ce faire, nous pouvons utiliser soit le CC
élément de format, ou le SCC
élément de mise en forme. Nous pouvons les combiner avec d'autres éléments de format pour faire des choses comme afficher le nombre ordinal, épeler le siècle, etc.
Exemple
Voici un exemple qui utilise le CC
élément de format pour renvoyer le siècle à partir d'une valeur de date :
SELECT TO_CHAR(DATE '2030-12-30', 'CC')
FROM DUAL;
Résultat :
21
Siècles négatifs
Nous pouvons utiliser le SCC
élément de format pour inclure le signe moins lors du passage d'une date négative :
SELECT TO_CHAR(DATE '-2030-12-30', 'SCC')
FROM DUAL;
Résultat :
-21
Nombre ordinal
On peut ajouter le TH
élément de format pour renvoyer le nombre ordinal du siècle.
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH')
FROM DUAL;
Résultat :
21ST
Nous pouvons également ajouter du texte arbitraire pour ajouter le mot "Century":
SELECT TO_CHAR(DATE '2030-12-30', 'CCTH "Century"')
FROM DUAL;
Résultat :
21ST Century
Notez que le texte est entouré de guillemets doubles.
Nous pouvons utiliser les majuscules si nécessaire :
SELECT TO_CHAR(DATE '2030-12-30', 'Ccth "Century"')
FROM DUAL;
Résultat :
21ST Century
Notez que je n'ai mis en majuscule que le premier caractère du modèle de format. Ce que je veux dire, c'est que j'ai utilisé Ccth
au lieu de CCth
. Alors que vous pourriez penser que CCth
devrait aboutir à un nombre ordinal en minuscules, ce n'est pas comme ça que ça marche. Voici ce qui se passe lorsque nous faisons cela :
SELECT TO_CHAR(DATE '2030-12-30', 'CCth "Century"')
FROM DUAL;
Résultat :
21ST Century
Fondamentalement, lorsque les deux premiers caractères du modèle de format sont en majuscules, le résultat est en majuscules. Par conséquent, pour produire une casse de titre, ne mettez en majuscule que le premier caractère du modèle de format.
Épelé Siècle
Nous pouvons ajouter le SP
élément de format pour épeler le siècle :
SELECT TO_CHAR(DATE '2030-12-30', 'CCTHSP "Century"')
FROM DUAL;
Résultat :
TWENTY-FIRST Century
Et nous pouvons utiliser les majuscules si nécessaire :
SELECT TO_CHAR(DATE '2030-12-30', 'Ccthsp "Century"')
FROM DUAL;
Résultat :
Twenty-First Century
On peut omettre le TH
spécificateur de format si nous ne voulons pas le nombre ordinal :
SELECT TO_CHAR(DATE '2030-12-30', 'Ccsp')
FROM DUAL;
Résultat :
Twenty-One
20e contre 21e siècles
Les règles suivantes s'appliquent en ce qui concerne le moment où une date est considérée comme étant au 20e siècle par rapport au 21e siècle.
- Si les 2 derniers chiffres d'une année à 4 chiffres sont compris entre 01 et 99 (inclus), le siècle est supérieur d'un chiffre aux 2 premiers chiffres de cette année.
- Si les 2 derniers chiffres d'une année à 4 chiffres sont 00, alors le siècle est le même que les 2 premiers chiffres de cette année.
Le même concept s'applique à d'autres siècles, comme le 13ème siècle, le 30ème siècle, etc.
Exemple :
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;
Résultat :
1999 2000 1299 1300 2999 3000 _______ _______ _______ _______ _______ _______ 20 20 13 13 30 30
Il existe de nombreux autres éléments de format disponibles pour formater les valeurs datetime dans Oracle. Voir Liste des éléments de format Datetime dans Oracle pour une liste complète.