如果数据超过一年,如何使PHP查询删除SQL表行

时间:2014-04-08 20:23:16

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

我的表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日,那么它将被单独留下。

非常感谢所有帮助。

2 个答案:

答案 0 :(得分:2)

尝试:

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);

答案 1 :(得分:0)

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

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