PHP和MySQL中日期时间的差异

3
我可以帮您进行翻译。以下是您需要翻译的内容:

我从MySQL中获得了两个日期,格式为datetime。

第一个日期是:

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

日期2是:

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

那么如何得到这样的结果:"25小时20分钟"

我不关心秒数。

我使用MySQL和PHP进行编程。

4个回答

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');

点击这里查看时间格式。


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分钟


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演示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接