我正在使用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
?
答案 0 :(得分:3)
我发布了正确答案。
这是我的代码
<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),
);