是否可以仅使用日期字段进行查询,例如' 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'
答案 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中不要使用timestamp
或date
关键字,而只使用您使用其中一种格式编写的日期,并注意 - 没有撇号!
您可以在免费图书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