【发布时间】:2014-12-15 01:49:21
【问题描述】:
我有数据存储在 mysql 数据库中。我正在尝试删除所有超过 30 天的记录。所有记录都有一个指定记录的created_date 的字段。 created_date 的格式是 Mon, 08 Dec 2014 00:33:13 -0500。运行删除查询时,所有记录都被删除。即使是不超过 30 天的记录。我不确定这是否是由于日期在 created_date 字段中的格式。如何删除超过 30 天的记录?
try {
$days = strtotime('1 month');
$delete = $pdo->prepare("DELETE FROM archive WHERE created_date > :days");
return $delete->execute(array('days' => $days));
}catch (Exception $e) {
echo "Failed: " . $e->getMessage();
}
表架构
+------------+-----------+-----+---------------+---------------------------------+
| First Name | Last Name | Age | Date of Birth | created_date |
+------------+-----------+-----+---------------+---------------------------------+
| Lionel | Messi | 27 | 6/24/1987 | Mon, 08 Dec 2014 00:33:13 -0500 |
| Michael | Jordan | 51 | 2/17/1963 | Tue, 15 Nov 2014 00:33:13 -0500 |
| Lebron | James | 30 | 12/30/1984 | Fri, 02 Oct 2014 00:33:13 -0500 |
+------------+-----------+-----+---------------+---------------------------------+
【问题讨论】:
-
DELETE FROM archive WHERE MONTH(created_date) < MONTH(NOW)) AND YEAR(created_date)<=YEAR(NOW()) -
@Hendry,这在本月的第一天可能效果不佳,它会在今天之前杀死所有东西:-)
-
:day和'days'?还是:day或'days'是错字?编辑:是的,错字。 -
@Fred-ii- 这是一个错字,谢谢。现已更正。
-
好的,不客气。你试过戈登的答案吗?