2012-10-23 169 views
3

我有2日期從MySQL與日期時間格式。PHP和MySQL中的日期時間之間的差異

日期1是:

"2012/09/28 09:28:00" (column name is departure_date) 

和日期2:

"2012/09/29 10:48:00" (column name is return_date) 

那麼如何得到這樣一個結果:"25 hours 20 minutes"

我不關心秒。

我正在使用MySQL和PHP的編程語言。

回答

2

您可以通過這個做例子:

$date1 = "2012/09/28 09:28:00"; 
$date2 = "2012/09/29 10:48:00"; 

$difference = abs(strtotime($date2)-strtotime($date1)); 

$hours = floor($difference/(60*60)); 
$minutes = floor(($difference - $hours * 60*60)/60); 

echo "{$hours} hours {$minutes} minutes"; 

,它會給你什麼你尋找:

25小時20分鐘

+0

感謝..只有這個方法對我的作品...:d –

6

日期差函數已經存在

SELECT DATEDIFF('2007-10-04 11:26:00','2007-10-04 11:50:00') 

您也可以嘗試TIMEDIFF

SELECT TIMEDIFF('2007-10-05 12:10:18','2007-10-05 16:14:59') AS duration; 

所以你的情況,你必須使用這兩個功能,這樣

SELECT TIMEDIFF(departure_date,return_date) AS duration; 
SELECT DATEDIFF(departure_date,return_date) AS duration; 
3

選項你可以使用DateInterval類。

$date1 = new DateTime("2012/09/28 09:28:00"); 
$date2 = new DateTime("2012/09/29 10:48:00"); 

$diff = $date1->diff($date2); 
echo $diff->format('%d days %h hours %i minutes'); 

檢查here的格式。

1

試試這個:

select concat(substr(mt,1,locate('.',mt)-1),' hours') hours, 
     concat(ceil((substr(mt,locate('.',mt)+1) * .60)/100),' minutes') 
                    as minutes 
from (
select TIMESTAMPDIFF(MINUTE, 
         '2012/09/28 09:28:00','2012/09/29 10:48:00')/60 as mt)a 


SQL Fiddle demo