sql >> Databasteknik >  >> RDS >> Oracle

2 funktioner som returnerar sekunderna från ett Datetime-värde i Oracle

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

  1. Hur får jag kolumndatatyp i Oracle med PL-SQL med låga privilegier?

  2. Hur skapar man en katalog i Oracle?

  3. SQL Server och Spectre/Meltdown Vulnerabilities

  4. Oracle SQL - REGEXP_LIKE innehåller andra tecken än a-z eller A-Z