在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类型的,问题解决了。