Подтвердить что ты не робот

Различные CURRENT_TIMESTAMP и SYSDATE в оракуле

После выполнения этого SQL в оракуле 10g:

SELECT SYSDATE, CURRENT_TIMESTAMP  FROM DUAL

Я получаю этот странный вывод: Toad output for query

В чем причина разницы во времени? Время сервера равно значению SYSDATE

4b9b3361

Ответ 1

CURRENT_DATE и CURRENT_TIMESTAMP вернуть текущую дату и время в часовом поясе сеанса.

SYSDATE и SYSTIMESTAMP вернуть системную дату и время, то есть система, в которой находится база данных.

Если ваш клиентский сеанс не находится в том же часовом поясе, что и сервер, на котором находится база данных (или говорит, что это не так, с помощью настроек NLS), смешение функций SYS* и CURRENT_* приведет к возврату разных значений, Они все правильные, они просто представляют разные вещи. Похоже, ваш сервер (или думает, что он есть) в часовом поясе +4: 00, а ваш клиентский сеанс находится в часовом поясе +4: 30.

Вы также можете увидеть небольшие различия во времени, если часы не синхронизированы, что, похоже, не является проблемой.

Ответ 2

SYSDATE, SYSTIMESTAMP возвращает дату базы данных и временную метку, тогда как current_date, current_timestamp возвращает дату и временную метку местоположения, из которого вы работаете.

Например, работая из Индии, я обращаюсь к базе данных, расположенной в Париже. в 16:00 IST:

select sysdate,systimestamp from dual;

Это возвращает мне дату и время Парижа:

РЕЗУЛЬТАТ

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

select current_date,current_timestamp from dual;
 
Это возвращает мне дату и время Индии:

РЕЗУЛЬТАТ

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

Обратите внимание на разницу во времени 3:30.

Ответ 3

SYSDATE возвращает системную дату системы, в которой находится база данных

CURRENT_TIMESTAMP возвращает текущую дату и время в часовом поясе сессии, значение типа данных TIMESTAMP WITH TIME ZONE

выполнить это comman

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

и он предоставит вам тот же результат.

Ответ 4

  • SYSDATE предоставляет дату и время сервера.
  • CURRENT_DATE предоставляет дату и время клиента (т.е. ваша система)
  • CURRENT_TIMESTAMP предоставляет данные и временную метку клиники.

Ответ 5

Примечание: SYSDATE - возвращает только дату, т.е. "yyyy-mm-dd" неверна. SYSDATE возвращает системную дату сервера базы данных, включая часы, минуты и секунды. Например:

SELECT SYSDATE FROM DUAL; будет возвращать вывод, похожий на следующее: 12/15/2017 12:42:39 PM

Ответ 6

  • SYSDATE, systimestamp возвращает дату и время сервера, на котором установлена ​​база данных. SYSDATE - возвращает только дату, т.е. "yyyy-mm-dd". systimestamp возвращает дату со временем и зоной, то есть "yyyy-mm-dd hh: mm: ss: ms timezone"
  • now() возвращает datetime при выполнении инструкции времени, т.е. "yyyy-mm-dd hh: mm: ss"
  • CURRENT_DATE - "yyyy-mm-dd", CURRENT_TIME - "hh: mm: ss", CURRENT_TIMESTAMP - "yyyy-mm-dd hh: mm: ss timezone". Они связаны с временем ввода записи.