查询日期值移动2天

时间:2014-05-30 00:30:56

标签: java sql-server spring-data-jpa

我正在尝试学习Spring Data并使用JpaRepository尝试从数据库中查询日期对象。但是,每次查询日期时,结果总是比我的预期值提前两天。时间成分似乎是正确的;这只是错误的日期。事实是,只有在我的机器上编译代码时才会发生这种情况。在另一个人身上做这件事会产生正确的结果。有什么我需要注意的吗?非常感谢任何帮助。

DB值:2014-05-29 19:47:00.576

下面的

testRepo()返回2014-05-27 19:47:00.576。

public void testRepo() {            
    System.out.println(repo.findByName("TESTDATE").getValue()); 
}

==========

@Autowired
private EntityManager em;

public DateObject findByName(String name) {

    StringBuffer sql = new StringBuffer();
    sql.append("select * ");
    sql.append("from static_dates ");
    sql.append("where name = '" + name + "'");      

    Query q = em.createNativeQuery(sql.toString(), DateObject.class);

    List<DateObject> resultList = q.getResultList();

    System.out.println(resultList.get(0).getValue());

    return resultList.get(0);
}

======

@Entity
@Table(name = "static_dates") 
public class DateObject {

    @Id
    @Column(name = "name")
    private String name;

    @Column(name = "description")
    private String description;

    @Column(name = "value")
    private Date value;

    public Date getValue() {
        return value;
    }

    public void setValue(Date value) {
        this.value = value;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

此外,保存日期值会产生正确的结果。例如,如果我调用repo.save(...)并传递当前系统日期,则相同的值将反映在数据库中。只有SELECT调用似乎不正确。

1 个答案:

答案 0 :(得分:0)

通过将我的MS SQL驱动程序从v3.0更新到v4.0来解决这个问题。