我正在使用 mybatis 查询我的 postgres 数据库,我的问题是时间戳之间的比较,我认为它无法正常工作,因为即使它没有抛出任何异常,它也不会重新运行所需的结果。这是我的代码
<select id="select_count" parameterType="map" resultType="map">
select count(*) as count, TO_CHAR(created_on, #{xaxis}) as xaxis,state
from my_table
where 1 = 1
<if test="fromdate != null"> and created_on >= #{fromdate} </if>
<if test="todate != null"> and created_on <= #{todate} </if>
<if test="state != null"> and state = #{state} </if>
GROUP BY xaxis, state
</select>
这是我的java代码
public List<Map<String, Object>> getStatesCount(Date fromDate,
Date toDate, String state, String xAxis) {
Map<String, Object> params = new HashMap<String, Object>();
params.put("fromdate", fromDate);
params.put("todate", toDate);
params.put("state", state);
params.put("xaxis", "yyyy-mm-dd");
List<Map<String, Object>> sqlResults = (List<Map<String, Object>>) template.selectList(SELECT_COUNT, params);
return sqlResults;
}
这是创建 my_table 的代码
CREATE SEQUENCE my_table_seq START WITH 1 INCREMENT BY 1;
CREATE TABLE my_table
(
id INT8 NOT NULL DEFAULT NEXTVAL('my_table_seq'),
state VARCHAR(20),
created_on TIMESTAMP WITH TIME ZONE,
PRIMARY KEY (id),
);
我知道我的表有很多行,其中 'created_on' 属性设置为 ,比如说今天的日期。但是当我传递我的两个日期参数甚至其中之一时,选择查询不会返回任何数据。
那么如何正确查询时间戳和java.util.Date
?