2012-10-04 171 views
-2

我在這裏有這段代碼,它允許我檢索一些日期。 我有這樣一個保守的今天日期:比較php中的兩個日期

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

我的日期字段在數據庫中一個varchar,它的格式爲:d-M-Y

我怎麼能對它們進行比較?我用過這個,但它不起作用!

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

感謝您的幫助!

+6

這時候你存儲** DATE你會得到什麼**的** ** VARCHAR ......做個聰明,重建該列爲「日期」類型。 – w00

+0

是的,這意味着改變很多東西,然後... .../ – Tao

+0

http://stackoverflow.com/questions/3651985/compare-dates-in-mysql http://stackoverflow.com/questions/1058031/mysql-compare-two-datetime-fields – czachor

回答

2

如果您想通過從數據庫中提取來比較日期,那麼我會建議您以日期格式存儲,而不是使用varchar格式。

但現在你可以做如下:

首次使用的strtotime您的字符串轉換爲unix時間戳。像:

$time = strtotime($date); 

然後你使用這個時間戳來計算你想要的任何格式的日期。爲了得到你想要的格式,你可以這樣做:

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

嘗試在查詢中使用STR_TO_DATE函數首先將VARCHAR轉換爲DATETIME值。

0

您與原值構建WHERE子句,嘗試這樣的事情:

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的建議。

0

您在id之後還有一個額外的,,並且您還需要在查詢中使用from子句。

SELECT DATE_FORMAT('date','%d-%m-%Y') as new_date, id from your_table WHERE new_date > $time; 
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"; 
     }