【问题标题】:Truncate table with date time older than n days截断日期时间超过 n 天的表
【发布时间】: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。查询应删除此日期之前的所有记录。

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

任何帮助将不胜感激。

【问题讨论】:

标签: mysql truncate


【解决方案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 affectedWarning Code : 1411 Incorrect datetime value: '2018-04-02' for function str_to_date
    • 再次影响 0 行
    猜你喜欢
    • 1970-01-01
    • 2018-04-24
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 2015-12-12
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多