Запросите поле DateTime, используя Date только в FileNet Content Engine

Можно ли сделать запрос, используя только поле даты, например '2017-03-02в IBM FileNet?

Я пробовал приведенное ниже утверждение, и оно не работает

SELECT * 
FROM Table_Name 
WHERE EstimatedDate = '2017-03-02'

ИЛИ ЖЕ

SELECT * 
FROM Table_Name 
WHERE EstimatedDate <= DATE '2017-03-02'

Я попытался включить TIMESTAMP и приведенный ниже запрос работает, но я хочу искать только по дате, например '2017-03-02'

SELECT * 
FROM Table_Name 
WHERE EstimatedDate <= TIMESTAMP '2017-03-02T00:00:00.000Z'

2 ответа

Для поиска конкретной даты вам нужно использовать диапазон между двумя временными метками: началом целевого дня и началом следующего дня. На сегодняшний день запрос будет:

SELECT * 
FROM Table_Name 
WHERE EstimatedDate >= 20180420T000000Z AND EstimatedDate < 20180421T000000Z

Обратите внимание, что вышеуказанные временные метки предполагают часовой пояс UTC (следовательно, 000000Z). Если ваша задача должна обрабатывать часовые пояса, отметки времени должны быть соответствующим образом скорректированы. Например, для Europe/Rome (текущий часовой пояс смещен +02:00) это было бы

EstimatedDate >= 20180419T220000Z AND EstimatedDate < 20180420T220000Z

Согласно IBM FileNet P8, Версия 5.2 - Справочник по синтаксису SQL"

<literal> ::= <string_literal> | <integer> | <float> | 
              <ISO datetime> | <W3C datetime> | TRUE | FALSE | UNKNOWN | <guid>

<ISO datetime> ::= YYYYMMDDThhmmss[,ffff]Z
<W3C datetime> ::= YYYY-MM-DD[Thh:mm:ss[.ffff]][<timezone>]

Таким образом, в FileNet P8 не используют timestamp или же date ключевые слова, но только дату, которую вы написали в одном из этих форматов, и примечание - без знака апострофа!

Вы можете найти примеры в бесплатной книге " Разработка приложений с помощью API-интерфейсов IBM FileNet P8", например, на странице 73 есть Example 3-30:

// Construct the sql statement
SearchSQL sql = new SearchSQL(
"select ISTOStartDate, ITSOEndDate, ITSOVehicle " +
"from ITSOIdleActivity " +
"where “ +
"ITSOVehicle = OBJECT('{D5DC8C04-2625-496f-A280-D791AFE87A73}') " +
"AND ITSOStartDate < 20090801T000000Z OR " +
"ITSOEndDate > 20090701T000000Z" );

Как видите, дата в этом примере записывается напрямую без апострофов как: 20090701T000000Z с помощью <ISO datetime> формат, вы также можете использовать другой формат: 2009-07-01

Другие вопросы по тегам