Обработка/сравнение дат OBIEE11g с помощью расширенного фильтра SQL

Я столкнулся с проблемой в Analysis с расширенным фильтром SQL и сравнением дат.

У меня есть два поля даты, Report Date и Validated Date. Я делаю сравнение в Advanced SQL Filter, где эти две даты должны совпадать.

В данном случае Report Date — это 28-FEB-2012 12:00, а Validated Date — это 28-FEB-2012 20:00. Мой анализ говорит, что эти две даты равны. За исключением технических, они не.

Выраженный в SQL, я пытаюсь выполнить это:

TO_CHAR(REPORT_DATE, 'DD-MON-YYYY') = TO_CHAR(VALIDATED_DATE, 'DD-MON-YYYY')  

Я пробовал эту строку в расширенном фильтре SQL, и она не работает. Я пытался:

EVALUATE(to_date(%1, %2), REPORT_NAME, 'DD-MON-YYYY')

...и OBIEE не принимает его.

Итак, гуру OBIEE 11g, как мне правильно сравнить эти даты, чтобы было ясно, что они не совпадают?


person user5334816    schedule 14.09.2015    source источник


Ответы (2)


Вы взглянули на физический SQL, сгенерированный OBIEE? Возможно есть разница в миллисекундах. Нужно ли сравнивать часы и минуты или будет работать сравнение с функцией CAST AS DATE? Кроме того, вы не упомянули, почему Evaluate не работает, вы настроили параметр в файлах конфигурации OBIEE для использования этой функции? С Уважением

person Ana GH    schedule 15.09.2015

Вы можете преобразовать оба в метки времени и сравнить их с timestampdiff()

TIMESTAMPDIFF(interval, timestamp1, timestamp2)

пример:

SELECT TIMESTAMPDIFF
( 
  SQL_TSI__SECOND, 
  CAST (report_date as TIMESTAMP),
  CAST ( validated_date as TIMESTAMP)
)
FROM table;

Затем вы можете использовать результат как условие (например, если разница больше 0 секунд, тогда X)

Наиболее подробный интервал - SQL_TSI_SECOND, поэтому это не сработает, если есть разница в миллисекундах, как предложила @Ana GH.

person Victor HDC    schedule 15.09.2015