Hieronder staan twee functies die kunnen worden gebruikt om het secondengedeelte van een datetime-waarde in Oracle Database te retourneren.
De EXTRACT()
Functie
De EXTRACT(datetime)
functie wordt gebruikt voor het extraheren van verschillende datetime-delen uit een datetime-waarde. Dit omvat het secondengedeelte.
Hier is een voorbeeld:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2035-01-01 10:15:37')
FROM DUAL;
Resultaat:
37
Het is de SECOND
trefwoord dat het secondengedeelte extraheert uit de datetime-waarde. Dit omvat eventuele fracties van seconden:
SELECT
EXTRACT(
SECOND FROM TIMESTAMP '2035-01-01 10:15:37.123456789'
)
FROM DUAL;
Resultaat:
37.123456789
We kunnen andere datumdelen krijgen door deze te wijzigen in het relevante trefwoord. Bijvoorbeeld YEAR
, MONTH
, HOUR
, MINUTE
, enz.
We kunnen de functie ook gebruiken met andere datetime-waarden, zoals DATE
.
De TO_CHAR(datetime)
Functie
We kunnen ook de TO_CHAR(datetime)
. gebruiken functioneren als een alternatieve methode om de secondencomponent uit een datetime-waarde te halen.
Deze functie accepteert de datetime- of intervalwaarde als het eerste argument en een formaatmodel als het tweede argument. De functie converteert vervolgens de waarde naar een gegevenstype van VARCHAR2
in het gespecificeerde formaat.
Het formaatmodel specificeert het formaat waarvoor de datetime/intervalwaarde moet worden geretourneerd. Het formaatmodel bestaat uit een of meer formaatelementen. Dit stelt ons in staat om de resultaten zorgvuldig te maken om ons gewenste formaat weer te geven.
Als we alleen de seconden willen retourneren, kunnen we een van de formaatelementen gebruiken die die component retourneren.
Er zijn een paar verschillende formaatelementen die we kunnen gebruiken bij het retourneren van de secondencomponent van een datetime-waarde.
De meest voor de hand liggende is de SS
formaatelement:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SS')
FROM DUAL;
Resultaat:
37
Zoals we kunnen zien, is de SS
format element retourneert alleen het secondengedeelte, maar niet de fractionele seconden.
Fractionele seconden
Als we de fractionele seconden willen opnemen, kunnen we de FF
. gebruiken formaat element. We kunnen ook X
. gebruiken om het wortelteken te specificeren (het symbool dat wordt gebruikt om het gehele deel van het breukdeel te scheiden):
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;
Resultaat:
37.123456789
Het is ook mogelijk om de precisie te beperken door een getal toe te voegen aan de FF
deel:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF5')
FROM DUAL;
Resultaat:
37.12345
Het nummer kan 1
zijn t/m 9
.
Hoewel u expliciet uw eigen wortelteken zou kunnen opgeven, bijvoorbeeld een punt (.
), de X
format-element kan handig zijn voor het overzetten naar verschillende talen/territoria.
Toen ik de bovenstaande voorbeelden uitvoerde, mijn NLS_TERRITORY
parameter is ingesteld op AUSTRALIA
, wat ertoe leidde dat het wortelteken een punt was.
Dit gebeurt er als ik mijn NLS_TERRITORY
wijzig parameter naar GERMANY
:
ALTER SESSION SET NLS_TERRITORY = 'GERMANY';
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 10:15:37.123456789', 'SSXFF')
FROM DUAL;
Resultaat:
37,123456789
Nu is het wortelteken een komma.
Seconden na middernacht
We kunnen SSSSS
. gebruiken om terug te keren naar de seconden na middernacht:
SELECT
TO_CHAR(TIMESTAMP '2035-01-01 00:01:05', 'SSSSS')
FROM DUAL;
Resultaat:
00065