sql >> Database >  >> RDS >> Oracle

2 Functies die de seconden retourneren van een Datetime-waarde in Oracle

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

  1. MySQL Bestel op een nummer, Nulls duren

  2. Geoptimaliseerde SQL voor boomstructuren

  3. Oracle:hoe twee datums af te trekken en minuten van het resultaat te krijgen

  4. Hoe schakel ik MSDTC in op SQL Server?