仅在FileNet Content Engine中使用Date查询DateTime字段

时间:2018-04-19 16:13:26

标签: date filenet-p8 filenet-content-engine filenet-cpe filenet-ce-sql

是否可以仅使用日期字段进行查询,例如' 2017-03-02'在IBM FileNet?

我已经尝试过以下声明,它似乎无法正常工作

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

OR

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 个答案:

答案 0 :(得分:2)

要搜索特定日期,您需要使用两个时间戳之间的范围:目标日的开始和第二天的开始。对于今天的日期,查询将是:

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

请注意,上面的时间戳假定为UTC时区(因此为000000Z)。如果您的任务应该处理时区,则应相应地调整时间戳。例如,对于Europe/Rome(当前时区偏移+02:00),将是

EstimatedDate >= 20180419T220000Z AND EstimatedDate < 20180420T220000Z

答案 1 :(得分:1)

根据IBM FileNet P8, Version 5.2 - SQL Syntax reference

<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中不要使用timestampdate关键字,而只使用您使用其中一种格式编写的日期,并注意 - 没有撇号!

您可以在免费图书Developing Applications with IBM FileNet P8 APIs中找到示例,例如在页面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