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
-
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" -
now()
devuelve datetime en la ejecución de la sentencia de tiempo, es decir, "aaaa-mm-dd hh: mm: ss" -
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.