我想 truncate 包含date time子句的表中的一些记录。这个链接有一个解决方案,但它不适合我。 TRUNCATE TABLE 'meter_to_sim_mapping' WHERE 'meter_to_sim_mapping'.'mapped_at' <= 在上面的where子句中,我想添加日期时间值。价值是 2018-04-02 16:03:52 . 查询应删除此日期之前的所有记录。如何用日期时间截断表?任何帮助都将不胜感激。
truncate
TRUNCATE TABLE 'meter_to_sim_mapping' WHERE 'meter_to_sim_mapping'.'mapped_at' <=
2018-04-02 16:03:52
voase2hg1#
以下示例可能适用于您:
DELETE FROM TABLE_NAME WHERE DATE_COLUMN = DATE_SUB("2018-04-02 16:03:52", INTERVAL 10 DAY);
您可以根据您的要求进行相应的更改。reference:mysql date_sub()功能
fv2wmkja2#
你需要使用 DELETE ```DELETE FROM TABLE_NAMEWHERE DATE_COLUMN < NOW() - INTERVAL N DAY
DELETE
或者
DELETE FROM TABLE_NAMEWHERE CAST(DATE_COLUMN AS DATE) < STR_TO_DATE('1-01-2012', '%d-%m-%Y') - INTERVAL N DAY
代替 `NOW()` 可以使用datetime值
STR_TO_DATE('12-01-2014 00:00:00','%m-%d-%Y %H:%i:%s')
演示 http://sqlfiddle.com/#!9/4607a6/1号
2条答案
按热度按时间voase2hg1#
以下示例可能适用于您:
您可以根据您的要求进行相应的更改。
reference:mysql date_sub()功能
fv2wmkja2#
你需要使用
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
STR_TO_DATE('12-01-2014 00:00:00','%m-%d-%Y %H:%i:%s')