Oracle
 sql >> Datenbank >  >> RDS >> Oracle

2 Funktionen, die die Sekunden aus einem Datetime-Wert in Oracle zurückgeben

Unten sind zwei Funktionen, die verwendet werden können, um den Sekundenteil eines datetime-Werts in der Oracle-Datenbank zurückzugeben.

Der EXTRACT() Funktion

Der EXTRACT(datetime) Die Funktion wird zum Extrahieren verschiedener datetime-Teile aus einem datetime-Wert verwendet. Dies schließt den Sekundenanteil ein.

Hier ist ein Beispiel:

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

Ergebnis:

37

Es ist die SECOND Schlüsselwort, das den Sekundenteil aus dem datetime-Wert extrahiert. Dies schließt Sekundenbruchteile ein:

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

Ergebnis:

37.123456789

Wir können andere Datumsteile erhalten, indem wir sie in das relevante Schlüsselwort ändern. Beispiel:YEAR , MONTH , HOUR , MINUTE usw.

Wir können die Funktion auch mit anderen datetime-Werten verwenden, wie z. B. DATE .

Der TO_CHAR(datetime) Funktion

Wir können auch TO_CHAR(datetime) verwenden Funktion als alternative Methode, um die Sekundenkomponente aus einem datetime-Wert zu erhalten.

Diese Funktion akzeptiert den datetime- oder Intervallwert als erstes Argument und ein Formatmodell als zweites Argument. Die Funktion konvertiert dann den Wert in einen Datentyp von VARCHAR2 im angegebenen Format.

Das Formatmodell gibt das Format an, für das der datetime/interval-Wert zurückgegeben werden soll. Das Formatmodell besteht aus einem oder mehreren Formatelementen. Dies ermöglicht es uns, die Ergebnisse sorgfältig so zu gestalten, dass sie unser gewünschtes Format widerspiegeln.

Wenn wir nur die Sekunden zurückgeben möchten, können wir eines der Formatelemente verwenden, die diese Komponente zurückgeben.

Es gibt einige verschiedene Formatelemente, die wir verwenden können, wenn wir die Sekundenkomponente aus einem datetime-Wert zurückgeben.

Der offensichtlichste ist der SS Formatelement:

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

Ergebnis:

37

Wie wir sehen können, ist die SS format-Element gibt nur den Sekundenteil zurück, aber nicht die Sekundenbruchteile.

Sekundenbruchteile

Wenn wir die Bruchteile von Sekunden einschließen möchten, können wir den FF verwenden Formatelement. Wir können auch X verwenden um das Basiszeichen anzugeben (das Symbol, das verwendet wird, um den ganzzahligen Teil vom Bruchteil zu trennen):

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

Ergebnis:

37.123456789

Es ist auch möglich, die Genauigkeit einzuschränken, indem man eine Zahl an den FF anhängt Teil:

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

Ergebnis:

37.12345

Die Nummer kann 1 sein bis 9 .

Während Sie explizit Ihr eigenes Radix-Zeichen angeben könnten – zum Beispiel einen Punkt (. ), das X format-Element kann für die Portierung über verschiedene Sprachen/Gebiete hinweg nützlich sein.

Als ich die obigen Beispiele ausgeführt habe, war mein NLS_TERRITORY Parameter wurde auf AUSTRALIA gesetzt , was dazu führte, dass das Basiszeichen ein Punkt war.

Folgendes passiert, wenn ich mein NLS_TERRITORY ändere Parameter auf GERMANY :

ALTER SESSION SET NLS_TERRITORY = 'GERMANY';

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

Ergebnis:

37,123456789

Jetzt ist das Basiszeichen ein Komma.

Sekunden nach Mitternacht

Wir können SSSSS verwenden um die Sekunden nach Mitternacht zurückzugeben:

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

Ergebnis:

00065