En Oracle Database, el CURRENT_TIMESTAMP()
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 WITH TIME ZONE
.
Es similar a LOCALTIMESTAMP
, excepto que LOCALTIMESTAMP
devuelve un TIMESTAMP
valor.
Sintaxis
La sintaxis es así:
CURRENT_TIMESTAMP [ (precision) ]
Donde la 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 CURRENT_TIMESTAMP
FROM DUAL;
Resultado:
06/AUG/21 08:32:31.165866000 AM AUSTRALIA/BRISBANE
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(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')
FROM DUAL;
Resultado:
2021-08-06 08:44:39
Precisión
Aquí hay un ejemplo que especifica la precisión. Este determina la precisión de fracciones de segundo del valor de tiempo devuelto.
SELECT CURRENT_TIMESTAMP(9)
FROM DUAL;
Resultado:
06/AUG/21 09:02:37.868264000 AM AUSTRALIA/BRISBANE
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 CURRENT_TIMESTAMP(10)
FROM DUAL;
Resultado:
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.
Omitir los paréntesis sin especificar la precisión
Como se mencionó, al llamar a CURRENT_TIMESTAMP
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 CURRENT_TIMESTAMP()
FROM DUAL;
Resultado:
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.
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 CURRENT_TIMESTAMP(null)
FROM DUAL;
Resultado:
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.