Несовместимые типы данных: ожидаемая дата получает номер - PullRequest
0 голосов
/ 05 ноября 2018

Я пытаюсь добавить предложение Where, которое получает данные только с этого конкретного дня (trunc (hr, 'dd')), но когда я ввожу примерное значение для HR (тип: DATE WITH TIME ZONE), я получаю следующая ошибка:

ORA-00932: inconsistent datatypes: expected DATE got NUMBER

Ниже приведены некоторые данные для столбца HR:

**HR**
25-DEC-16 12.00.00.000000000 AM AMERICA/NEW_YORK
30-DEC-16 06.00.00.000000000 AM US/EASTERN

Ниже приведен мой (пример) запроса:

select *
  from value v
  where trunc(v.hr, 'dd') = 
        trunc('01-DEC-16 12.00.00.000000000 AM AMERICA/NEW_YORK', 'dd')
    and v.code = 'DEFAULT';

Нужно ли что-то конвертировать? Я пытался использовать функцию TO_DATE , но я не думаю, что существует какой-либо формат даты, который соответствует моим образцам данных ...

Заранее спасибо!

1 Ответ

0 голосов
/ 06 ноября 2018

Есть несколько проблем в вашем состоянии WHERE.

TRUNC(..., 'DD') возвращает значение DATE, т. Е. Вы теряете всю информацию о часовом поясе. Я бы использовал этот

WHERE TRUNC(SYS_EXTRACT_UTC(hr)) = TRUNC(SYS_EXTRACT_UTC(TIMESTAMP '2016-12-01 12:00:00 AMERICA/NEW_YORK'))

Примечание: вы можете пропустить DD, так как это значение по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...