比较日期是否已过

时间:2012-02-22 20:27:42

标签: php mysql date

所以我有一些活动(派对),每个人都有一个约会,当聚会的时候,我如何在当前日期查看?我需要找到所有已经通过的事件? 有任何想法吗?我甚至不知道从哪里开始,我将日期存储在mysql中,如下所示:dd/mm/yy它是纯文本,因为我使用的是WP元数据集。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

您应该使用DATETIME格式存储日期并使用

SELECT date FROM dates WHERE DATEDIFF(date,NOW()) <= 0;

如果您坚持保留非常糟糕的数据库方案,则可以反而进行转换

SELECT STR_TO_DATE(date,'%d/%m/%Y') AS adate WHERE DATEDIFF(adate,NOW()) <= 0

答案 1 :(得分:1)

可能是strtotime的良好候选者,它可以将您的日期转换为时间戳,该时间戳可以与使用time()函数生成的当前时间戳进行比较。

http://php.net/manual/en/function.strtotime.php

答案 2 :(得分:1)

// your db date format is dd/mm/yy (European). the American is mm/dd/yy 
$db_date_event = str_replace('/', '-', $db['date_event']); 
// when - or . is used in strtotime European d-m-y format is assumed    
$db_date_event = strtotime($db_date_event);

if (time() > $db_date_event)
{
    echo 'this event is in the past';
}

// To compare at day level: (each day is represented in the 0:00 hrs (day's begin)) 

if (mktime(0, 0, 0, date('n'), date('j'), date('Y')) > $db_date_event)
{
    echo 'this event is in the past';
}

答案 3 :(得分:0)

将日期转换为Unix时间戳:

list($d,$m,$y)=explode("/",$datestring);
$date=mktime(0,0,0,$m,$d,$y);

然后与今天比较:

$today=mktime(0,0,0,date("m"),date("d"),date("Y"));

使用<==>

if($date<$today)
{
     echo "Date is in the past";
}