sql >> Database teknologi >  >> RDS >> Oracle

2 funktioner, der returnerer sekunderne fra en Datetime-værdi i Oracle

Nedenfor er to funktioner, der kan bruges til at returnere sekunder-delen fra en datetime-værdi i Oracle Database.

EXTRACT() Funktion

EXTRACT(datetime) funktion bruges til at udtrække forskellige datetime dele fra en datetime værdi. Dette inkluderer sekunderdelen.

Her er et eksempel:

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

Resultat:

37

Det er SECOND nøgleord, der udtrækker sekunddelen fra datetime-værdien. Dette vil inkludere eventuelle brøksekunder:

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

Resultat:

37,123456789

Vi kan få andre datodele ved at ændre det til det relevante søgeord. For eksempel YEAR , MONTH , HOUR , MINUTE osv.

Vi kan også bruge funktionen med andre datetime-værdier, såsom DATE .

TO_CHAR(datetime) Funktion

Vi kan også bruge TO_CHAR(datetime) fungere som en alternativ metode til at hente sekunder-komponenten fra en datetime-værdi.

Denne funktion accepterer datetime eller intervalværdien som sit første argument og en formatmodel som sit andet argument. Funktionen konverterer derefter værdien til en datatype VARCHAR2 i det angivne format.

Formatmodellen angiver det format, som dato/intervalværdien skal returneres for. Formatmodellen består af et eller flere formatelementer. Dette gør os i stand til omhyggeligt at udforme resultaterne, så de afspejler vores ønskede format.

Hvis vi kun ønsker at returnere sekunderne, kan vi bruge et af formatelementerne, der returnerer den komponent.

Der er et par forskellige formatelementer, som vi kan bruge, når vi returnerer sekunder-komponenten fra en datetime-værdi.

Den mest oplagte er SS formatelement:

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

Resultat:

37

Som vi kan se, er SS formatelementet returnerer kun sekunddelen, men ikke brøksekunderne.

Brøkdele af sekunder

Hvis vi vil inkludere brøksekunderne, kan vi bruge FF formatelement. Vi kan også bruge X for at angive radix-tegnet (det symbol, der bruges til at adskille heltalsdelen fra brøkdelen):

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

Resultat:

37,123456789

Det er også muligt at begrænse præcisionen ved at tilføje et tal til FF del:

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

Resultat:

37.12345

Nummeret kan være 1 til 9 .

Mens du udtrykkeligt kunne angive dit eget radix-karakter – for eksempel et punktum (. ), X formatelement kan være nyttigt til portering på tværs af forskellige sprog/territorier.

Da jeg kørte ovenstående eksempler, min NLS_TERRITORY parameter blev sat til AUSTRALIA , hvilket resulterede i, at radix-tegnet blev et punktum.

Her er, hvad der sker, når jeg ændrer min NLS_TERRITORY parameter til 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 er radix-tegnet et komma.

Sekunder efter midnat

Vi kan bruge SSSSS for at returnere sekunderne efter midnat:

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

Resultat:

00065

  1. int(11) vs. int(alt andet)

  2. MariaDB JSON_ARRAY() Forklaret

  3. Hvordan får man ASCII-værdi i Oracle?

  4. Omfang af midlertidige tabeller i SQL Server