to_timestamp to_datetime to_date example ejemplos ejemplo current_timestamp oracle plsql oracle10g

example - to_datetime oracle



Diferentes CURRENT_TIMESTAMP y SYSDATE en el orĂ¡culo (6)

Después de ejecutar este SQL en Oracle 10g:

SELECT SYSDATE, CURRENT_TIMESTAMP FROM DUAL

Recibo esta salida extraña:

¿Cuál es la causa de la diferencia en el tiempo? El tiempo del servidor es igual al valor SYSDATE


  1. SYSDATE , systimestamp return datetime del servidor donde está instalada la base de datos. SYSDATE - devuelve solo la fecha, es decir, "aaaa-mm-dd". systimestamp devuelve la fecha con el tiempo y la zona, es decir, "aaaa-mm-dd hh: mm: ss: ms timezone"
  2. now() devuelve datetime en la ejecución de la sentencia de tiempo, es decir, "aaaa-mm-dd hh: mm: ss"
  3. CURRENT_DATE - "aaaa-mm-dd", CURRENT_TIME - "hh: mm: ss", CURRENT_TIMESTAMP - "aaaa-mm-dd hh: mm: ss timezone". Estos están relacionados con un tiempo de inserción de registro.

Nota: SYSDATE - devuelve solo la fecha, es decir, "aaaa-mm-dd" no es correcto. SYSDATE devuelve la fecha del sistema del servidor de la base de datos que incluye horas, minutos y segundos. Por ejemplo:

SELECCIONE SYSDATE FROM DUAL; devolverá un resultado similar al siguiente: 15/12/2017 12:42:39 PM


SYSDATE devuelve la fecha del sistema, del sistema en el que reside la base de datos

CURRENT_TIMESTAMP devuelve la fecha y la hora actuales en la zona horaria de la sesión, en un valor de tipo de datos TIMESTAMP WITH TIME ZONE

ejecutar este comandante

ALTER SESSION SET TIME_ZONE = ''+3:0'';

y le proporcionará el mismo resultado.


CURRENT_DATE y CURRENT_TIMESTAMP devuelven la fecha y la hora actuales en la zona horaria de la sesión.

SYSDATE y SYSTIMESTAMP devuelven la fecha y hora del sistema, es decir, del sistema en el que reside la base de datos.

Si la sesión de su cliente no está en la misma zona horaria que el servidor en el que está la base de datos (o dice que no es así, a través de su configuración NLS), mezclar las funciones SYS* y CURRENT_* devolverá valores diferentes. Todos son correctos, simplemente representan cosas diferentes. Parece que su servidor está (o cree que lo está) en una zona horaria +4: 00, mientras que la sesión de su cliente está en una zona horaria +4: 30.

También puede ver pequeñas diferencias en el tiempo si los relojes no están sincronizados, lo que no parece ser un problema aquí.


SYSDATE , SYSTIMESTAMP devuelve la fecha y la marca de tiempo de la base de datos, mientras que current_date , current_timestamp devuelve la fecha y la marca de tiempo de la ubicación desde donde trabaja.

Por ej. trabajando desde India, accedo a una base de datos ubicada en París. a las 4:00 p.m. IST:

select sysdate,systimestamp from dual;

Esto me devuelve la fecha y la hora de París:

RESULTADO

12-MAY-14 12-MAY-14 12.30.03.283502000 PM +02:00

select current_date,current_timestamp from dual;

Esto me devuelve la fecha y la hora de la India:

RESULTADO

12-MAY-14 12-MAY-14 04.00.03.283520000 PM ASIA/CALCUTTA

Tenga en cuenta la diferencia de tiempo de 3:30.


  • SYSDATE proporciona la fecha y hora de un servidor.
  • CURRENT_DATE proporciona la fecha y hora del cliente. (Es decir, su sistema)
  • CURRENT_TIMESTAMP proporciona datos y marca de tiempo de un clinet.