Как преобразовать sysdate в время UTC в oracle

#sql #oracle #datetime #sysdate

#sql #Oracle #дата и время #sysdate

Вопрос:

У меня есть запрос на вычитание даты из sysdate. Однако объект date, который у меня есть, находится в UTC, но sysdate не дает мне UTC времени. Как преобразовать sysdate, чтобы указать дату в UTC.

Я уже пробовал использовать sys_extract_utc

 select sys_extract_utc(systimestamp) from dual;
  

Это работает нормально и дает мне правильную метку времени UTC. Но объект, возвращаемый им, не совпадает с тем, sysdate поэтому, когда я вычитаю дату из этого объекта, я получаю INTERVAL DAY to SECOND , но это должно быть число.

Ответ №1:

Использование ПРИВЕДЕНИЯ к результату sys_extract_utc(systimestamp) является решением этой проблемы, поскольку sys_extract_utc возвращает timestamp .

 select cast(sys_extract_utc(systimestamp) as DATE) from dual;
  

Ответ №2:

sys_extract_utc возвращает временную метку, и вы ищете дату, поэтому вам просто нужно приведение: select CAST(sys_extract_utc(systimestamp) as DATE) from dual;

Ответ №3:

В случае, если вам не нужна часть «время»:

 SELECT TO_CHAR(SYS_EXTRACT_UTC(SYSTIMESTAMP), 'YYYY-MM-DD') FROM dual;