在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呢?
最佳答案
如果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
}
}
}
关于java - 检查 java.util.date 和 MySql 时间戳是否属于同一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36948974/