4

是否可以仅使用 IBM FileNet 中的“日期”字段进行查询2017-03-02

我已经尝试了以下语句,但它似乎不起作用

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'
4

2 回答 2

3

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

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

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

EstimatedDate >= 20180419T220000Z AND EstimatedDate < 20180420T220000Z
于 2018-04-20T09:22:49.503 回答
2

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

您可以在免费书籍使用 IBM FileNet P8 API 开发应用程序中找到示例,例如在第 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

于 2018-04-19T17:44:10.293 回答