2011-03-20 177 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)); 
相关问题