Запросите поле 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