比较时间戳与mybatis,postgresql
问题描述:
我使用mybatis来查询我的postgres数据库,我的问题是时间戳之间的比较,我认为它不能正常工作,因为它不会重新运行所需的结果,即使它没有投掷任何异常。 这里是我的代码比较时间戳与mybatis,postgresql
<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
?
答
我发布了正确的答案。
这里是我的代码
<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),
);
代码:中日期参数的拼写不正确,现在一切正常,thx – 2013-03-26 09:02:28
MyBatis生成什么查询? (在MyBatis中启用SQL日志记录或在'postgresql.conf'中启用'log_statement ='all'') – 2013-03-26 09:02:30
如果您认为这个问题可能对其他人有用,请发布您自己的答案,并在Stack Overflow上的新用户定时器让你;我会高兴。 – 2013-03-26 09:03:16