将时间戳与mybatis,postgresql进行比较

时间:2013-03-26 08:25:25

标签: java timestamp alfresco mybatis

我正在使用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 &gt;= #{fromdate} </if>
        <if test="todate != null"> and created_on &lt;= #{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

1 个答案:

答案 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 &gt;= #{fromdate} </if>
    <if test="todate != null"> and created_on &lt;= #{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),
);