-2

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

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

我在数据库中的日期字段是 varchar,格式如下:dmY

我该如何比较它们?我用过这个,但它不会工作!

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

谢谢您的帮助!

4

5 回答 5

2

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

但现在您可以执行以下操作:

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

$time = strtotime( $date );

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

$newDate = date( 'd-m-y', $time );
于 2012-10-04T14:52:52.663 回答
1

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

于 2012-10-04T14:34:59.503 回答
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 建议的功能。

于 2012-10-04T14:35:16.827 回答
0

在查询中,您有一个额外的,afterid并且还需要一个from子句。

SELECT DATE_FORMAT('date','%d-%m-%Y') as new_date, id from your_table WHERE new_date > $time;
于 2012-10-04T14:35:19.737 回答
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"; 
         }
于 2014-12-22T05:51:54.270 回答