【问题标题】:Delete records when the difference in days between two dates is greater than a certain value in javajava中当两个日期之间的天数差大于某个值时删除记录
【发布时间】:2021-07-03 01:37:14
【问题描述】:

当 SYSDATE 和 insertDate(我的表的时间戳(6)格式的字段)之间的差异大于 20 天时,我需要删除记录。 我尝试了以下方法:

String myQuery = "delete from STUDENT where SYSDATE - insertDate > INTERVAL '20' DAY";
session.createQuery(myQuery).executeUpdate();

但我收到此错误:

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: 20 near line 1

在此查询之后,我创建了一个标准来检索剩余学生的列表。这是删除记录的最佳方法吗?还是我应该使用标准?如果是这样怎么办?谢谢

【问题讨论】:

  • 这是什么数据库?
  • 我在听 Oracle 数据库

标签: java sql hibernate hibernate-criteria


【解决方案1】:

试试这个查询:

String myQuery = "delete from STUDENT where (SYSDATE - insertDate) > 20";
session.createQuery(myQuery).executeUpdate();

【讨论】:

  • insertDate 属于 TIMESTAMP (6) 类型,因此这种方式的差异并不好。我通过指定格式来修改我的问题。
  • @Fesilox 然后使用CURRENT_TIMESTAMP 而不是SYSDATE,您将得到这种格式的输出:10 19:30:0.0,其中 10 是天的差异,其他部分是小时。
  • 我收到以下错误:SQL 错误:不一致的数据类型:预期的 INTERVAL DAY TO SECOND,得到了 NUMBER
  • 试试这个delete from STUDENT where (CURRENT_TIMESTAMP - (TO_TIMESTAMP(insertDate, 'YYYY-MM-DD HH24:MI:SS'))) > 20
  • 我猜你用于列timestamp的格式与CURRENT_TIMESTAMP返回的格式不一样
猜你喜欢
  • 1970-01-01
  • 2011-03-20
  • 2011-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多