检查java.util.date和MySql时间戳是否属于同一天

时间:2016-04-29 23:28:21

标签: java mysql sql jpa

从Java开始,我有一个Date对象,如何将它与Mysql时间戳进行比较以检查它是否属于同一天?

select c.content, c.contentDate from Contents c where c.contentDate = ?1 and c.userName = ?2

上面的sql应该返回属于特定日期(Date)的记录。但是,如何比较Java Date和Sql Timestamp?

1 个答案:

答案 0 :(得分:2)

如果contentDate可能是指定日期的凌晨2点或晚上9点,则您无法使用contentDate = ?,因为一整天都没有单一值。您需要说出contentDate >= ? and contentDate < ?,其中第一个?是在一天开始时的午夜,第二个?是在第二天开始时的午夜。您可以使用Java计算这两个值(例如,使用CalendarLocalDate),然后使用setDate()上的PreparedStatement来设置值。

LocalDate easter = LocalDate.of(2016, Month.MARCH, 27);

// Get all content from Easter Day (Mar 27, 2016)
String sql = "SELECT * FROM Contents WHERE contentDate >= ? and contentDate < ?";
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
    stmt.setDate(1, java.sql.Date.valueOf(easter));
    stmt.setDate(2, java.sql.Date.valueOf(easter.plusDays(1)));
    try (ResultSet rs = stmt.executeQuery()) {
        while (rs.next()) {
            //code here
        }
    }
}