2011-03-20 175 views
3

我需要計算從數據庫獲取的日期和當前日期之間的天數。如何計算PHP中兩個日期之間的天數?

$upload_date = mysql_query("SELECT Date FROM Setting WHERE ID = $row[ID]"); 
$current_date = date("Y-m-d"); 

我該怎麼做?

+0

你能放什麼格式的日期是? – Josh 2011-03-20 15:14:19

+0

他們都是YYYY-MM-DD。 – Gabriele 2011-03-20 15:15:31

+0

'$ daysDelta = floor((mktime() - strtotime($ database ['Date'])/ 86400);''也許? – 2011-03-20 15:16:45

回答

3
select datediff(curdate(),'2011-03-01'); 
2

如果你想在PHP中使用它,請使用DateTime類:

$current = new DateTime($current_date); 
$db_date = new DateTime($upload_date); 
$days = $current->diff($db_date)->days; 

還是老校友方式:

$days = round((strtotime($current) - strtotime($db_date)) /24 /60 /60); 
1

使用SELECT DATEDIFF( 'NEW_DATE', 'OLD_DATE');

mysql> SELECT DATEDIFF('2006-04-01','2006-04-01'); 
+-------------------------------------+ 
| DATEDIFF('2006-04-01','2006-04-01') | 
+-------------------------------------+ 
|         0 | 
+-------------------------------------+ 
1 row in set (0.00 sec) 

mysql> SELECT DATEDIFF('2006-04-01','2007-04-01'); 
+-------------------------------------+ 
| DATEDIFF('2006-04-01','2007-04-01') | 
+-------------------------------------+ 
|        -365 | 
+-------------------------------------+ 
1 row in set (0.00 sec) 

mysql> SELECT DATEDIFF('2006-04-01','2005-04-01'); 
+-------------------------------------+ 
| DATEDIFF('2006-04-01','2005-04-01') | 
+-------------------------------------+ 
|         365 | 
+-------------------------------------+ 
1 row in set (0.00 sec) 

DATEDIFF(表達式,表達式2)

DATEDIFF()返回開始日期 EXPR和結束日期之間的表達式2的天數。 expr和expr2是日期或 日期和時間表達式。計算中僅使用值 的日期部分。

mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30'); 
    -> 1 
mysql> SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31'); 
    -> -31 
0

您可以在下面簡單的方式做到這一點,

$current_date = date("Y-m-d");   // Current date 
$db_date = date("Y-m-d");    // Date from your database 
$diff = abs(strtotime($current_date) - strtotime($db_date)); 
$total_days = floor ($diff/(60*60*24)); 
相關問題