我正在尝试将存储日期与当前日期进行比较,并相应地发回数据。我不熟悉PHP,所以这就是我到目前为止所拥有的
while ($row = mysql_fetch_array($result)) {
// temp user array
$event_date_str = $row["date"];
$todays_date_str = date("m-j-Y");
$today = strtotime($todays_date_str);
$event_date = strtotime($event_date_str);
if($event_date > $today){
$event = array();
$event["pid"] = $row["pid"];
$event["name"] = $row["name"];
$event["longitude"] = $row["longitude"];
$event["latitude"] = $row["latitude"];
$event["pavement"] = $row["pavement"];
$event["traffic"] = $row["traffic"];
$event["environment"] = $row["environment"];
$event["image_b64"] = $row["image_b64"];
$event["created_at"] = $row["created_at"];
$event["date"] = $row["date"];
$event["time"] = $row["time"];
$event["type"] = $row["type"];
// push single product into final response array
array_push($response["events"], $event);
}else{
//delete it here
}
有了那些代码,我什么都没有回来。我有两个项目存储在数据库中,一个日期为“2-28-2014”,另一个日期为“2-14-2014”,所以我应该得到一个而不是另一个,但我没有回来。我知道没有保存日期的前导零,所以我应该使用j吧?有人可以帮我弄清楚为什么这不起作用,对不起,如果它看起来像一个简单的问题。
提前谢谢你,
泰勒
答案 0 :(得分:2)
这不是一种有效的做事方式。如果您需要根据日期选择项目,请直接在MySQL查询中执行。 PHP过滤总是比MySQL慢。特别是因为在PHP级别过滤时必须通过网络提供额外的数据。
所以这样做:
SELECT * FROM `table` WHERE `record_expires_datetime_gmt` > UTC_TIMESTAMP();
SELECT * FROM `table` WHERE `record_expires_date_gmt` > DATE(UTC_TIMESTAMP());
// use NOW() for local time, UTC_TIMESTAMP() is GMT/UTC
然后执行您需要处理的记录。从不SELECT *
,然后在PHP中过滤记录。
MySQL中有一整套DATETIME
functions允许您对MySQL服务器端数据进行过滤。
PS :显然,要使用此方法,必须正确设计MySQL表。日期(日期和时间)字段必须是DATE
或DATETIME
类型,而不是仅在项目中有意义的代理字符串。