【问题标题】:How to make PHP Query to Delete SQL Table Rows if Data is Older than One Year如果数据超过一年,如何使 PHP 查询删除 SQL 表行
【发布时间】:2014-04-08 20:23:15
【问题描述】:

我的表tracking_orders 有一个名为order_time 的列。当创建一个新行时,会像这样创建数据并将其放入该列:

$order_time= date('F j, Y');

当我插入一个新行时,我使用代码:

  $sql = "insert into tracking_orders (order_time) values ('".$order_time."')";

今天,如果我使用该查询,该列的数据将显示为:April 8, 2014

我正在尝试进行删除查询以查找表中超过 1 年的任何行,然后将其删除。因此,如果我去年在 4 月 8 日的同一天做了一行,那么它将被删除。如果 order_time 列的数据是 2013 年 4 月 9 日,那么它将被单独保留。

非常感谢所有帮助。

【问题讨论】:

    标签: php sql sql-server time sql-delete


    【解决方案1】:

    试试:

    delete from sh_cart where shsc_date< DATE_ADD(NOW(), Interval -12 MONTH);
    

    检查: [关联] http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

    如果您的列是 VARCHAR:

    delete from tracking_orders where STR_TO_DATE(order_time, '%M %e, %Y')< DATE_ADD(NOW(), Interval -12 MONTH);
    

    【讨论】:

    • 使用 GETDATE() 怎么样?并且不要提及它的运行方式(数据库作业或一些计划的日常任务)
    • 它在 MONTH 附近显示不正确的语法。此外,我的列的表数据显示April 8, 2014,完全正确。
    • 好吧,您的列似乎是 VARCHAR.. 然后您必须使用 STR_TO_DATE 函数将其转换为日期 - STR_TO_DATE(order_time, '%M %d, %Y')
    • 你知道在 sql server 问题中引用了 mysql 链接
    • 感谢您的帮助。在stackoverflow.com/questions/22948535/… 上查看我的另一个问题,也许您也可以在这里帮助我。
    【解决方案2】:

    我假设您将日期存储为字符串 (VARCHAR) 而不是正确的 DATE 类型。这种格式不允许您使用 SQL 的原生日期函数,例如 DATE_DIFF()DATE_ADD()

    将来,如果可能,我强烈建议将您的列更改为 DATE 类型,并将日期存储为 YYYY-MM-DD 格式。您可以在显示时将其重新格式化为用户友好的格式,但在数据库中,标准数值数据总是更好(尤其是当此表变大时)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 2010-11-13
      • 2019-01-01
      • 2016-05-06
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多