#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;