大家好,我坚持这一点:我想删除过去数据库中的记录。我只想考虑月份和日期。例如,如果数据库记录是(这是在 DB 上的格式)“2013 年 4 月 5 日”,我需要将其与今天的“2013 年 4 月 6 日”日期进行比较。在这种情况下,此记录将被删除。我见过使用 UNIX 时间戳的示例,但没有使用日期('M j Y')的格式。谢谢!
问问题
206 次
2 回答
0
在数据库中存储日期的更好方法是使用 DATE 或 DATETIME 格式。SQL 允许您从这些类型中获取所需的所有信息。但是这样的请求应该可以工作。
你最终可以用正则表达式来做,但它会很重......
但是您可以在 PHP 中执行此操作,获取所有结果,然后浏览它们并使用类似的东西比较日期strtotime
,然后删除每个 ID。仍然非常繁重,但比在 SQL 请求中更容易实现。但是,如果您可以更改 SQL 架构,那仍然会更好。
于 2013-04-07T01:37:50.533 回答
0
我会尝试的方法是使用strtotime()将英文文本字符串转换为 unix 时间戳,然后将新时间戳与当前日期进行比较。这是一些描述该方法的php伪代码。
$threshold_to_deletion = numbers of days old a record is allowed to be;
$is_it_yesterday = 0;
$current_date = new DateTime();
$current_date->getTimestamp();
if ( !($is_it_yesterday = strtotime($str_from_db)) === false ) {
$date_interval = date_diff($is_it_yesterday, $current_date);
if( $date_interval >= $threshold_to_deletion ) {
Do stuff here to delete
}
} else {
echo "DB string is not a valid date: $str_from_db";
}
请注意它没有完成或测试,它只是在那里松散地描述它是如何完成的。我希望这有帮助。
蒂姆·杜马斯
于 2013-04-07T02:58:12.330 回答