sql >> Database >  >> RDS >> Oracle

CURRENT_TIMESTAMP() Functie in Oracle

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.

  1. Perl DBD::Oracle Module installatie

  2. 2019 Open Source Database Report:Topdatabases, Public Cloud vs. On-Premise, Polyglot Persistence

  3. Hoe installeer ik Haproxy en Keepalive

  4. De PostgreSQL-upgrade ontwarren