删除超过一天的记录

时间:2013-12-30 20:54:53

标签: sql db2

我有一张链接表。如果链接是生成的,那么第二天它仍然在表中,而不是我要删除它。如果有多行我想删除每一行。我的查询是:

DELETE FROM resetpassword WHERE expiry_timestamp < DATEADD(day, -1, GETDATE())

但这给了我一个错误:

com.web.command.exceptions.DatabaseException:
  "DAY" is not valid in the context where it is used.

如何删除所有日常行?

修改

expiry_timestamptimestamp所以我认为查询应该类似于下面的内容,但我仍然无法让它发挥作用。

select * from resetpassword
where timestamp(expiry_timestamp) = timestamp(current date) - 1 days 

3 个答案:

答案 0 :(得分:2)

注意:这是DB2特定的答案。

好的,这篇帖子在这里:http://www.dbforums.com/db2/1637371-help-there-dateadd-function-db2.html

(此帖同意):http://www.ibm.com/developerworks/data/library/techarticle/0211yip/0211yip3.html

说你可以这样做:

   DELETE FROM resetpassword WHERE expiry_timestamp < (current date - 1 DAYS)

答案 1 :(得分:0)

如果将expiry_timestamp定义为时间戳,则应

DELETE FROM resetpassword WHERE expiry_timestamp < CURRENT TIMESTAMP - 1 day

通常最好避免类型转换(例如到目前为止的时间戳),除非有必要这样做。

答案 2 :(得分:0)

我认为这可能是一个答案:

DELETE FROM resetpassword WHERE expiry_timestamp < DATEADD(dd, -1, GETDATE());