我现在遇到一个实际工作中的问题。由于业务需要,需要将探测数据按分钟存储到数据库中,但是由于数据越来越多,磁盘空间已经吃不消了,因此决定编写一个定期处理的程序,将前一周的数据进行汇总。删除,只在库中留一条汇总后的记录。每隔一周运行一次该程序。目前遇到的困难是如何对时间进行比较,准确定位基于当前时间一周前的数据。时间是按照‘YYYY-MM-DD HH24:MI:SS’格式存储的。请各位高人指教,非常感谢!

解决方案 »

  1.   

    是字符串还是时间类型
    假设要删2009-12-10以前(含)的数据
    DELETE FROM ... WHERE xxx < '2009-12-11'
      

  2.   

    一样,< 'YYYY-MM-DD' (这个日期不删除)
      

  3.   

    时间是datetime类型的这样在MYSQL中你可以直接比较就行了where 时间字段 <'2009-12-10'
    或者
    where 时间字段 < CURDATE() - interval 7 day
      

  4.   

    如果使用程序、系统任务之类运行这个批处理,建议使用前者,而不是CURDATE() - interval 7 day因为,系统任务其实有两个时间信息,一个是当前的系统时间CURDATE(),一个是任务应当启动的时间。
    假设因为系统繁忙、或者系统重启等原因,可能会造成实际启动时间晚于任务应当启动的时间,如果隔天的话,会出现数据删除错误。