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