如何根据日期列从数据库表中删除超过30天的记录

时间:2020-05-17 15:15:17

标签: sql sqlite sql-delete sqldatetime

这是我在下面使用的python代码。但是它不起作用并且没有显示任何错误。

delquery = "DELETE FROM table1 WHERE date_column < date ('now', '-30 day')"        
conn.execute(delquery)

我正在使用SQLite数据库。

2 个答案:

答案 0 :(得分:1)

如果格式为yyyy/MM/dd,则必须将其更改为yyyy-MM-dd,因为这是SQLite中日期的唯一有效的可比格式:

DELETE FROM table1 WHERE REPLACE(date_column, '/', '-') < date('now', '-30 day')

或者甚至更好地更新表格,所以date_column的格式正确,并且每次您要比较日期时都不需要功能REPLACE()

UPDATE table1
SET date_column = REPLACE(date_column, '/', '-')

答案 1 :(得分:0)

declare @end date = DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)

DELETE FROM table1 WHERE date_column < @end