截断日期时间超过 n 天的表
Posted
技术标签:
【中文标题】截断日期时间超过 n 天的表【英文标题】:Truncate table with date time older than n days 【发布时间】:2018-04-25 10:46:58 【问题描述】:我想truncate
带有日期时间子句的表中的一些记录。
This 链接有一个解决方案,但它对我不起作用。
TRUNCATE TABLE 'meter_to_sim_mapping' WHERE 'meter_to_sim_mapping'.'mapped_at' <=
在上面的 where 子句中,我想添加日期时间值。值为2018-04-02 16:03:52
。查询应删除此日期之前的所有记录。
如何用日期时间截断表格?
任何帮助将不胜感激。
【问题讨论】:
不要使用 TRUNCATE,使用 DELETE TRUNCATE TABLE 完全清空一个表dev.mysql.com/doc/refman/5.7/en/truncate-table.html 检查我的答案。 【参考方案1】:下面的例子可能对你有用:
DELETE FROM TABLE_NAME
WHERE DATE_COLUMN = DATE_SUB("2018-04-02 16:03:52", INTERVAL 10 DAY);
您可以根据需要进行相应更改。
参考:MySQL DATE_SUB() Function
【讨论】:
【参考方案2】:你需要使用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
【讨论】:
我不想使用NOW()
。我想给出一个日期,然后从中减去天数
这是我的查询DELETE FROM
meter_to_sim_mapping` WHERE CAST(meter_to_sim_mapping
.mapped_at
AS DATE)
它给了我0 Rows affected
Warning Code : 1411 Incorrect datetime value: '2018-04-02' for function str_to_date
再次影响 0 行以上是关于截断日期时间超过 n 天的表的主要内容,如果未能解决你的问题,请参考以下文章
Python:将字符串转换为日期时间,计算时差,选择时差超过3天的行