PHP将表中的日期与当前日期进行比较

时间:2014-02-24 02:33:13

标签: php date

我正在尝试将存储日期与当前日期进行比较,并相应地发回数据。我不熟悉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吧?有人可以帮我弄清楚为什么这不起作用,对不起,如果它看起来像一个简单的问题。

提前谢谢你,

泰勒

1 个答案:

答案 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表。日期(日期和时间)字段必须是DATEDATETIME类型,而不是仅在项目中有意义的代理字符串。