截断日期时间早于n天的表

时间:2018-04-25 10:46:58

标签: mysql truncate

我希望truncate来自带有日期时间子句的表中的一些记录。

https://docs.djangoproject.com/en/2.0/topics/db/queries/#following-relationships-backward链接有一个解决方案,但它对我不起作用。

TRUNCATE TABLE 'meter_to_sim_mapping' WHERE 'meter_to_sim_mapping'.'mapped_at' <=

在上面的where子句中我想添加日期时间值。值为2018-04-02 16:03:52。查询应删除此日期之前的所有记录。

如何使用日期时间截断表?

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

您需要使用DELETE

DELETE FROM TABLE_NAME
WHERE DATE_COLUMN < NOW() - INTERVAL N DAY

DELETE FROM TABLE_NAME
WHERE CAST(DATE_COLUMN AS DATE) < STR_TO_DATE('1-01-2012', '%d-%m-%Y')  - INTERVAL N DAY

取代NOW()您可以使用日期时间值

STR_TO_DATE('12-01-2014 00:00:00','%m-%d-%Y %H:%i:%s')

<强>演示

  

http://sqlfiddle.com/#!9/4607a6/1

答案 1 :(得分:0)

以下示例可能对您有用:

DELETE FROM TABLE_NAME
WHERE DATE_COLUMN = DATE_SUB("2018-04-02 16:03:52", INTERVAL 10 DAY);

您可以根据自己的要求进行相应更改。

参考: MySQL DATE_SUB() Function