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

2 Fonctions qui renvoient les secondes d'une valeur Datetime dans Oracle

Vous trouverez ci-dessous deux fonctions qui peuvent être utilisées pour renvoyer la partie des secondes à partir d'une valeur datetime dans Oracle Database.

Le EXTRACT() Fonction

Le EXTRACT(datetime) La fonction est utilisée pour extraire diverses parties datetime d'une valeur datetime. Cela inclut la partie des secondes.

Voici un exemple :

SELECT 
    EXTRACT(SECOND FROM TIMESTAMP '2035-01-01 10:15:37')
FROM DUAL;

Résultat :

37

C'est le SECOND mot-clé qui extrait la partie des secondes de la valeur datetime. Cela inclura toutes les fractions de seconde :

SELECT 
    EXTRACT(
        SECOND FROM TIMESTAMP '2035-01-01 10:15:37.123456789'
        )
FROM DUAL;

Résultat :

37.123456789

Nous pouvons obtenir d'autres parties de date en les remplaçant par le mot-clé pertinent. Par exemple, YEAR , MONTH , HOUR , MINUTE , etc.

Nous pouvons également utiliser la fonction avec d'autres valeurs datetime, telles que DATE .

Le TO_CHAR(datetime) Fonction

Nous pouvons également utiliser le TO_CHAR(datetime) fonctionnent comme une méthode alternative pour obtenir le composant secondes à partir d'une valeur datetime.

Cette fonction accepte la date/heure ou la valeur d'intervalle comme premier argument et un modèle de format comme deuxième argument. La fonction convertit ensuite la valeur en un type de données de VARCHAR2 dans le format spécifié.

Le modèle de format spécifie le format pour lequel renvoyer la valeur datetime/intervalle. Le modèle de format consiste en un ou plusieurs éléments de format. Cela nous permet d'élaborer soigneusement les résultats pour refléter le format souhaité.

Si nous voulons uniquement renvoyer les secondes, nous pouvons utiliser l'un des éléments de format qui renvoient ce composant.

Il existe quelques éléments de format différents que nous pouvons utiliser lors du retour du composant secondes à partir d'une valeur datetime.

Le plus évident est le SS élément de format :

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SS')
FROM DUAL;

Résultat :

37

Comme nous pouvons le voir, le SS L'élément de format renvoie uniquement la partie des secondes, mais pas les fractions de secondes.

Fraction de seconde

Si nous voulons inclure les fractions de seconde, nous pouvons utiliser le FF élément de mise en forme. Nous pouvons également utiliser X pour spécifier le caractère de base (le symbole utilisé pour séparer la partie entière de la partie fractionnaire) :

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;

Résultat :

37.123456789

Il est également possible de limiter la précision en ajoutant un nombre au FF partie :

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF5')
FROM DUAL;

Résultat :

37.12345

Le nombre peut être 1 à 9 .

Bien que vous puissiez fournir explicitement votre propre caractère de base - par exemple, un point (. ), le X L'élément de format peut être utile pour le portage dans différentes langues/territoires.

Lorsque j'ai exécuté les exemples ci-dessus, mon NLS_TERRITORY le paramètre a été défini sur AUSTRALIA , ce qui faisait que le caractère de base était un point.

Voici ce qui se passe lorsque je modifie mon NLS_TERRITORY paramètre en GERMANY :

ALTER SESSION SET NLS_TERRITORY = 'GERMANY';

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;

Résultat :

37,123456789

Maintenant, le caractère de base est une virgule.

Minuit après-midi

Nous pouvons utiliser SSSSS pour retourner les secondes après minuit :

SELECT 
    TO_CHAR(TIMESTAMP '2035-01-01 00:01:05', 'SSSSS')
FROM DUAL;

Résultat :

00065