Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment obtenir le siècle à partir d'une date dans Oracle

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.