oracle JDBC模板删除仅以日期作为条件的行

2sbarzqh  于 2023-10-16  发布在  Oracle
关注(0)|答案(1)|浏览(72)

我需要从Oracle中删除一些使用生日作为Java标准的用户。
Oracle中的表:

create table users{
..
birthday DATE not null,
...
}

存储的数据看起来像:

user1, 17.03.1976
user2, 28.09.1968

我现在需要使用JDBCTemplates删除数据(birthday由相关框架提供为java.util.Date)

private void deleteUser(java.util.Date birthdayUtil)
{
  java.sql.Date birthday = new java.sql.Date(birthdayUtil.getTime());
  String sql = "DELETE FROM USERS WHERE birthday = ?";
  jdbcTemplate.update(sql, birthday);
}

但是,不会删除任何数据,即使日期已正确设置为数据库中可用的值。
有什么想法吗?

hyrbngr7

hyrbngr71#

请检查Oracle数据库中的生日字段。
如果在Oracle数据库中将字段创建为时间戳,则必须使用时间范围。
注意,这是Scala代码,但它应该与Java类似。
//扩展字段以包含时间:

val birthday_from = s"${birthday} 00:00:00"
val birthday_to = s"${birthday} 23:59:59"

或者创建两个LocalDateTime-Fields。
// SQL -生日必须在两个时间戳之间:2019 - 09 - 28 00:00:00

where birthday >= TO_DATE(?, 'dd.mm.yyyy HH24:MI:SS')
  and birthday <= TO_DATE(?, 'dd.mm.yyyy HH24:MI:SS')

相关问题