sql >> Database >  >> RDS >> Oracle

Hoe fractionele seconden van een datetime-waarde in Oracle te retourneren?

Wanneer u Oracle Database gebruikt, kunt u de TO_CHAR(datetime) . gebruiken functie om verschillende delen van een datetime-waarde te retourneren, inclusief de fractionele seconden.

Om het fractionele secondengedeelte van een datetime-waarde te retourneren, gebruikt u de FF formaatelement.

Voorbeeld

Hier is een voorbeeld om te demonstreren:

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

Resultaat:

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', 'FF5')
FROM DUAL;

Resultaat:

12345

Het getal kan 1 zijn t/m 9 .

Plaats het tweede deel

In de bovenstaande voorbeelden heb ik alleen het gedeelte met fractionele seconden geretourneerd en niets anders.

We kunnen zowel het secondengedeelte als de fractionele seconden opnemen. Gebruik hiervoor de SS . 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

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.

Het is eigenlijk de NLS_NUMERIC_CHARACTERS parameter die specificeert welk teken wordt gebruikt voor het wortelteken. Echter, het wijzigen van de NLS_TERRITORY parameter verandert impliciet de NLS_NUMERIC_CHARACTERS parameter. U kunt de NLS_NUMERIC_CHARACTERS . ook expliciet bijwerken parameter als je wilt, in welk geval je NLS_TERRITORY parameter blijft ongewijzigd.

Zie Lijst met datum/tijd-indelingselementen in Oracle voor een volledige lijst met opmaakelementen die kunnen worden gebruikt om datum/tijd-waarden op te maken.


  1. Vermijd deze veelvoorkomende fout bij het uitvoeren van de opgeslagen procedure in MS Access

  2. Rol A terug als B fout gaat. spring boot, jdbctemplate

  3. SQL rij-retourvolgorde

  4. MySQL-fout omzeilen Deadlock gevonden bij het proberen te vergrendelen; probeer de transactie opnieuw te starten