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