从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?
答案 0 :(得分:2)
如果contentDate
可能是指定日期的凌晨2点或晚上9点,则您无法使用contentDate = ?
,因为一整天都没有单一值。您需要说出contentDate >= ? and contentDate < ?
,其中第一个?
是在一天开始时的午夜,第二个?
是在第二天开始时的午夜。您可以使用Java计算这两个值(例如,使用Calendar
或LocalDate
),然后使用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
}
}
}