In Oracle Database, de CURRENT_TIMESTAMP()
functie retourneert de huidige datum en tijd in de sessietijdzone, in een waarde van het gegevenstype TIMESTAMP WITH TIME ZONE
.
Het lijkt op LOCALTIMESTAMP
, behalve dat LOCALTIMESTAMP
retourneert een TIMESTAMP
waarde.
Syntaxis
De syntaxis gaat als volgt:
CURRENT_TIMESTAMP [ (precision) ]
Waar de optionele precision
argument specificeert de fractionele seconde precisie van de tijdwaarde die wordt geretourneerd.
Bij het aanroepen van de functie zonder argument moeten de haakjes worden weggelaten.
Voorbeeld
Hier is een voorbeeld van het aanroepen van de functie zonder de precisie op te geven:
SELECT CURRENT_TIMESTAMP
FROM DUAL;
Resultaat:
06/AUG/21 08:32:31.165866000 AM AUSTRALIA/BRISBANE
In dit voorbeeld wordt de datum weergegeven in een formaat dat is gebaseerd op de waarde van de NLS_DATE_FORMAT
van mijn systeem parameter (die momenteel DD/MON/RR
is) ). Deze parameter ontleent zijn waarde aan de NLS_TERRITORY
parameter (waarvan de mijne AUSTRALIA
is ).
We hebben de mogelijkheid om deze parameters te wijzigen (zie bijvoorbeeld Hoe u het datumformaat kunt wijzigen in uw Oracle-sessie).
Als alternatief kunnen we een functie gebruiken zoals TO_CHAR()
om het resultaat in een ander formaat te retourneren.
Voorbeeld:
SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
Resultaat:
2021-08-06 08:44:39
Precisie
Hier is een voorbeeld dat de precisie specificeert. Deze bepaalt de fractionele secondeprecisie van de geretourneerde tijdwaarde.
SELECT CURRENT_TIMESTAMP(9)
FROM DUAL;
Resultaat:
06/AUG/21 09:02:37.868264000 AM AUSTRALIA/BRISBANE
Merk op dat het precisieargument een getal tussen 0 en 9 moet zijn.
Dit is wat er gebeurt als we een waarde buiten dat bereik doorgeven:
SELECT CURRENT_TIMESTAMP(10)
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT CURRENT_TIMESTAMP(10) FROM DUAL Error at Command Line : 1 Column : 26 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.
De haakjes weglaten zonder precisie op te geven
Zoals vermeld, bij het bellen naar CURRENT_TIMESTAMP
zonder de precision
. te doorstaan argument, moet u de haakjes weglaten.
Dit is wat er gebeurt als we de haakjes opnemen zonder de precisie te specificeren:
SELECT CURRENT_TIMESTAMP()
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT CURRENT_TIMESTAMP() FROM DUAL Error at Command Line : 1 Column : 26 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.
We krijgen dezelfde fout als in het vorige voorbeeld. Oracle Database zoekt naar een precisieargument tussen 0 en 9, maar we hebben er geen doorgegeven.
Nullargument
Dezelfde fout treedt op bij het doorgeven van null
:
SELECT CURRENT_TIMESTAMP(null)
FROM DUAL;
Resultaat:
Error starting at line : 1 in command - SELECT CURRENT_TIMESTAMP(null) FROM DUAL Error at Command Line : 1 Column : 26 Error report - SQL Error: ORA-30088: datetime/interval precision is out of range 30088. 00000 - "datetime/interval precision is out of range" *Cause: The specified datetime/interval precision was not between 0 and 9. *Action: Use a value between 0 and 9 for datetime/interval precision.