比较php中的两个日期

时间:2012-10-04 14:29:25

标签: php mysql

我在这里有这个代码,它允许我检索一些日期。 我以这种方式保存今天的日期:

$time = date("d-m-Y");

我在数据库中的日期字段是varchar,它采用以下格式:d-m-Y

我如何比较它们?我用过这个但是不行!

SELECT DATE_FORMAT('date','%d-%m-%Y'), id, WHERE date>$time;

感谢您的帮助!

5 个答案:

答案 0 :(得分:2)

如果你想通过从数据库中提取来比较日期,那么我建议你以varchar格式存储日期格式。

但现在你可以做到以下几点:

首先使用strtotime将字符串转换为unix时间戳。喜欢:

$time = strtotime( $date );

然后使用此时间戳以您想要的任何格式计算日期。要获得所需的格式,您可以这样做:

$newDate = date( 'd-m-y', $time );

答案 1 :(得分:1)

尝试在查询中使用STR_TO_DATE函数首先将VARCHAR转换为DATETIME值。

答案 2 :(得分:0)

您正在使用原始值构建WHERE-Clause,请尝试以下操作:

SELECT DATE_FORMAT('date','%d-%m-%Y') AS compare_date, `id` FROM `table_name` WHERE DATE_FORMAT('date','%d-%m-%Y') > $time;

请注意,这是一个字符串比较,因此最好以相反的方式进行,例如%Y-%m-%d

或者使用STR_TO_DATE函数作为@Micah Carrick建议。

答案 3 :(得分:0)

,之后您还有id,并且您在查询中也需要from子句。

SELECT DATE_FORMAT('date','%d-%m-%Y') as new_date, id from your_table WHERE new_date > $time;

答案 4 :(得分:0)

      This Example Is Working 100% try Now

      $exp_date = "2006-01-16"; 

      $todays_date = date("Y-m-d"); 

      $today = strtotime($todays_date); 

      $expiration_date = strtotime($exp_date); 

      if ($expiration_date > $today) 
         { 
           $valid = "yes"; 
         } 
      else 
         { 
           $valid = "no"; 
         }