在SQLSERVER中,日期字段T_LOG_TIME中存放的内容如下面的样例:
2008-3-6 14:35:31.000
在BIRT中使用查询条件
select * from
EXIMUSER.SEC_USER_INFO_LOG
where
T_LOG_TIME>?
and
T_LOG_TIME<?
一开始将查询参数和查询参数需要关联报表参数的数据类型都设置为
datetime
类型的,问题就来了。当第一个查询时间为上午的时间时(如
03/06/2008 03:40:00 AM
),查询结果是正确的,为
2008
年
3
月
6
日上午三点四十以后的记录。但是第一个时间参数改为下午时间(如
03/06/2008 03:40:00 PM
),发现查询出来的结果中竟然会有
2008/03/06
下午一点多钟的记录,显然是不对的,我需要找的是
2008
年
3
月
6
日下午三点四十以后的记录。做了几次试验发现只有是下午的记录都会出现。感觉
BIRT
在时间的比较环节有点问题。后来我再尝试将查询参数和与之关联的报表参数是数据类型改为
String
类型的,问题解决了。