sql >> Database >  >> RDS >> Oracle

LOCALTIMESTAMP() Functie in Oracle

In Oracle Database, de LOCALTIMESTAMP() functie retourneert de huidige datum en tijd in de sessietijdzone in een waarde van het gegevenstype TIMESTAMP .

Het is vergelijkbaar met CURRENT_TIMESTAMP , behalve dat CURRENT_TIMESTAMP geeft een TIMESTAMP WITH TIME ZONE waarde.

Syntaxis

De syntaxis gaat als volgt:

LOCALTIMESTAMP [ (timestamp_precision) ]

Waar de optionele timestamp_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 LOCALTIMESTAMP
FROM DUAL;

Resultaat:

07/AUG/21 08:49:50.026443000 AM

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(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

Resultaat:

2021-08-07 08:50:20

Precisie

Hier is een voorbeeld dat de precisie specificeert. Dit bepaalt de precisie van een fractie van een seconde van de geretourneerde tijdswaarde.

SELECT LOCALTIMESTAMP(9)
FROM DUAL;

Resultaat:

07/AUG/21 08:50:47.203717000 AM

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 LOCALTIMESTAMP(10)
FROM DUAL;

Resultaat:

Error starting at line : 1 in command -
SELECT LOCALTIMESTAMP(10)
FROM DUAL
Error at Command Line : 1 Column : 23
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 aanroepen van LOCALTIMESTAMP zonder de precision argument, moet u de haakjes weglaten.

Dit is wat er gebeurt als we de haakjes opnemen zonder de precisie te specificeren:

SELECT LOCALTIMESTAMP()
FROM DUAL;

Resultaat:

Error starting at line : 1 in command -
SELECT LOCALTIMESTAMP()
FROM DUAL
Error at Command Line : 1 Column : 23
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 LOCALTIMESTAMP(null)
FROM DUAL;

Resultaat:

Error starting at line : 1 in command -
SELECT LOCALTIMESTAMP(null)
FROM DUAL
Error at Command Line : 1 Column : 23
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. Bereken MD5-hash van een UTF8-tekenreeks

  2. Bestaande tabel verplaatsen van primaire bestandsgroep naar andere bestandsgroep

  3. Probleemset 1 - Entiteiten identificeren

  4. Percona XtraDB Cluster installeren op CentOS 7