sql >> Base de Datos >  >> RDS >> Oracle

Función LOCALTIMESTAMP() en Oracle

En Oracle Database, el LOCALTIMESTAMP() La función devuelve la fecha y hora actual en la zona horaria de la sesión en un valor de tipo de datos TIMESTAMP .

Es similar a CURRENT_TIMESTAMP , excepto que CURRENT_TIMESTAMP devuelve un TIMESTAMP WITH TIME ZONE valor.

Sintaxis

La sintaxis es así:

LOCALTIMESTAMP [ (timestamp_precision) ]

Donde el timestamp_precision opcional El argumento especifica la precisión de fracciones de segundo del valor de tiempo devuelto.

Al llamar a la función sin un argumento, se deben omitir los paréntesis.

Ejemplo

Aquí hay un ejemplo de cómo llamar a la función sin especificar la precisión:

SELECT LOCALTIMESTAMP
FROM DUAL;

Resultado:

07/AUG/21 08:49:50.026443000 AM

Este ejemplo muestra la fecha en un formato basado en el valor de NLS_DATE_FORMAT de mi sistema parámetro (que actualmente es DD/MON/RR ). Este parámetro deriva su valor del NLS_TERRITORY parámetro (de los cuales el mío es AUSTRALIA ).

Tenemos la opción de cambiar estos parámetros (por ejemplo, vea Cómo cambiar el formato de fecha en su sesión de Oracle).

Alternativamente, podemos usar una función como TO_CHAR() para devolver el resultado en un formato diferente.

Ejemplo:

SELECT TO_CHAR(LOCALTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;

Resultado:

2021-08-07 08:50:20

Precisión

Aquí hay un ejemplo que especifica la precisión. Esto determina la precisión de fracciones de segundo del valor de tiempo devuelto.

SELECT LOCALTIMESTAMP(9)
FROM DUAL;

Resultado:

07/AUG/21 08:50:47.203717000 AM

Tenga en cuenta que el argumento de precisión debe ser un número entre 0 y 9.

Esto es lo que sucede cuando pasamos un valor fuera de ese rango:

SELECT LOCALTIMESTAMP(10)
FROM DUAL;

Resultado:

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.

Omitir los paréntesis sin especificar la precisión

Como se mencionó, al llamar a LOCALTIMESTAMP sin pasar la precision argumento, debe omitir los paréntesis.

Esto es lo que sucede cuando incluimos los paréntesis sin especificar la precisión:

SELECT LOCALTIMESTAMP()
FROM DUAL;

Resultado:

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.

Obtenemos el mismo error que en el ejemplo anterior. Oracle Database está buscando un argumento de precisión entre 0 y 9, pero no pasamos ninguno.

Argumento nulo

El mismo error ocurre al pasar null :

SELECT LOCALTIMESTAMP(null)
FROM DUAL;

Resultado:

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.