Nedan finns två funktioner som kan användas för att returnera sekunddelen från ett datetime-värde i Oracle Database.
EXTRACT()
Funktion
EXTRACT(datetime)
Funktionen används för att extrahera olika datetime-delar från ett datetime-värde. Detta inkluderar sekunddelen.
Här är ett exempel:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2035-01-01 10:15:37')
FROM DUAL;
Resultat:
37
Det är SECOND
nyckelord som extraherar sekunddelen från datetime-värdet. Detta inkluderar eventuella bråkdelar:
SELECT
EXTRACT(
SECOND FROM TIMESTAMP '2035-01-01 10:15:37.123456789'
)
FROM DUAL;
Resultat:
37.123456789
Vi kan få andra datumdelar genom att ändra det till det relevanta sökordet. Till exempel YEAR
, MONTH
, HOUR
, MINUTE
, etc.
Vi kan också använda funktionen med andra datetime-värden, till exempel DATE
.
TO_CHAR(datetime)
Funktion
Vi kan också använda TO_CHAR(datetime)
fungerar som en alternativ metod för att hämta komponenten sekunder från ett datetime-värde.
Den här funktionen accepterar datetime- eller intervallvärdet som dess första argument och en formatmodell som dess andra argument. Funktionen konverterar sedan värdet till en datatyp VARCHAR2
i det angivna formatet.
Formatmodellen anger formatet som datum/intervallvärdet ska returneras för. Formatmodellen består av ett eller flera formatelement. Detta gör det möjligt för oss att noggrant utforma resultaten för att återspegla vårt önskade format.
Om vi bara vill returnera sekunderna kan vi använda ett av formatelementen som returnerar den komponenten.
Det finns några olika formatelement som vi kan använda när vi returnerar komponenten sekunder från ett datetime-värde.
Den mest uppenbara är SS
formatelement:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SS')
FROM DUAL;
Resultat:
37
Som vi kan se är SS
formatelementet returnerar bara sekunddelen, men inte bråkdelssekunderna.
Bråkdelar av sekunder
Om vi vill inkludera bråksekunderna kan vi använda FF
formatelement. Vi kan också använda X
för att ange radixtecknet (symbolen som används för att separera heltalsdelen från bråkdelen):
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;
Resultat:
37.123456789
Det är också möjligt att begränsa precisionen genom att lägga till ett nummer till FF
del:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF5')
FROM DUAL;
Resultat:
37.12345
Numret kan vara 1
till 9
.
Även om du uttryckligen kan ange ditt eget radixtecken – till exempel ett punkt (.
), X
formatelement kan vara användbart för portering över olika språk/territorier.
När jag körde exemplen ovan, min NLS_TERRITORY
parametern sattes till AUSTRALIA
, vilket resulterade i att radixtecknet blev ett punkt.
Här är vad som händer när jag ändrar min NLS_TERRITORY
parameter till GERMANY
:
ALTER SESSION SET NLS_TERRITORY = 'GERMANY';
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;
Resultat:
37,123456789
Nu är radixtecknet ett kommatecken.
Sekunder efter midnatt
Vi kan använda SSSSS
för att återgå sekunderna efter midnatt:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 00:01:05', 'SSSSS')
FROM DUAL;
Resultat:
00065