3

mysqlからdatetime形式の2つの日付があります。

日付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を使用しています。

4

4 に答える 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;

したがって、あなたの場合、このような2つの関数を使用するオプションがあります

SELECT TIMEDIFF(departure_date,return_date) AS duration;
SELECT DATEDIFF(departure_date,return_date) AS duration;
于 2012-10-23T06:27:15.803 に答える
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');

フォーマットはこちらをご確認ください。

于 2012-10-23T06:31:02.103 に答える
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分

于 2012-10-23T06:32:52.707 に答える
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


SQLFiddleデモ

于 2012-10-23T06:39:49.737 に答える