【问题标题】:How to move records older than 30 days to another table in MYSQL? [duplicate]如何将超过 30 天的记录移动到 MYSQL 中的另一个表? [复制]
【发布时间】:2016-09-30 19:02:42
【问题描述】:

我有一张名为activation 的表。在这里,我想将超过 30 天的记录移动到另一个表中。如何做到这一点?

 SELECT * DATE_FORMAT(datetime, '%m/%d/%Y') 
 FROM 
 tablename 
 WHERE datetime <= DATE_SUB(SYSDATE(), INTERVAL 30 DAY)

我尝试了这个查询,但它返回一个错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在 'DATE_FORMAT(datetime, '%m/%d/%Y') FROM activation WHERE datetime 附近使用正确的语法

【问题讨论】:

  • 你在*DATE_FORMAT(datetime, '%m/%d/%Y')之间缺少逗号(,),应该是SELECT * ,DATE_FORMAT(datetime, '%m/%d/%Y') FROM .....
  • 我必须在 %m%d%Y 中传递什么吗???
  • 不,那是你希望日期出现在最后一列的格式,看看 date_format 函数,dev.mysql.com/doc/refman/5.5/en/…
  • 好的,谢谢这解决了我的错误,但你能指导我如何将这些记录移动到另一个表
  • 如果您已经创建了表,只需执行insert into newtable select columnnames from oldtable,如答案中所述

标签: php mysql


【解决方案1】:

你可以试试

INSERT INTO tablename2 select *, DATE_FORMAT(datetime, '%m/%d/%Y') from tablename1 WHERE datetime <= DATE_SUB(SYSDATE(), INTERVAL 30 DAY);

DELETE FROM tablename1 WHERE datetime <= DATE_SUB(SYSDATE(), INTERVAL 30 DAY);

【讨论】:

  • 我收到此错误:1136 - 列数与第 1 行的值计数不匹配
  • 我仍然收到这个错误,为什么?
  • 请检查表1和表2中的列数是否相同?
  • @Ben Swinburne 感谢编辑
【解决方案2】:

如何实现的示例:

INSERT INTO Table2(LongIntColumn2, CurrencyColumn2)
SELECT LongIntColumn1, Avg(CurrencyColumn) as CurrencyColumn1 FROM tablename GROUP BY LongIntColumn1;

发件人:https://stackoverflow.com/a/74204/2925795

【讨论】:

    猜你喜欢
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    相关资源
    最近更新 更多