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.