0

(NOW)関数を使用して、現在の関数を取得し、TIME「到着時間」としてデータベースに挿入しました。

これを以下に示します。

$sql="INSERT INTO Time(Arrival_Time)
VALUES(NOW())";

タイプは時間で、次のように挿入します。

12:17:29

(現在時刻-到着時刻)で待ち時間を計算する必要があります。

例:現在時刻(13:15)到着時刻(12:15)

したがって、これは次のように表示されます。

Waiting time 
1 hour 

これが私が試した解決策です。

<?php

$conn = mysqli_connect("localhost","root","") or die ("No connection");
mysqli_select_db($conn, "a&e") or die('Could not select database.');

$query = "SELECT Arrival_time, TIMEDIFF(Arrival_time,NOW()) as Waiting_Time FROM Time";
$result = mysqli_query($conn, $query) or die("Invalid query");

echo "<table border='1'>
<tr>
<th>Waiting Time</th>
</tr>";

while ($row = $result->fetch_object()){

 echo "<tr>
  <td>" . $row->Waiting_Time . "</td>
  </tr>";

}

echo "</table>";
mysqli_close($conn);
?>

編集

$query = "SELECT Arrival_time, TIME_FORMAT(ABS(TIMEDIFF(CURTIME(), Arrival_time)),'%H hours') as Waiting_Time FROM Time";";

表示

Waiting time 
3 hours 

次の場合、どのように使用しますtimeか。waiting_timeが3時間を超えた場合、「この患者は次に診察を受ける必要があります!」と警告します。

4

2 に答える 2

2

SQLステートメントの選択したフィールドの間にコンマがありません。タイムスタンプ(文字列)と日付を比較しています。文字列を日付に戻す必要があります。

これを変える

SELECT Arrival_time TIMEDIFF(Arrival_time,NOW()) as Waiting_Time FROM Time

SELECT Arrival_time, TIMEDIFF(DATETIME(Arrival_time),NOW()) as Waiting_Time FROM Time
于 2013-03-26T13:24:50.007 に答える
1

の代わりにCURRENT_TIMEまたはを使用してみることができます:CURTIME()NOW()

SELECT Arrival_time, TIMEDIFF(Arrival_time,CURRENT_TIME) as Waiting_Time FROM Time;

[編集]はDATETIMEなので
、時間だけではありません。MySQL DocNOW()

[追加] TIME_FORMAT(time_diff、'%H hours')
を 使用して時間を取得できます。 そして、を削除するには、絶対値を取得するメソッドを追加します。
-ABS()

SELECT Arrival_time, TIME_FORMAT(ABS(TIMEDIFF(Arrival_time,CURRENT_TIME)),'%H hours') as Waiting_Time FROM Time;

[timediff>3の場合は戻り値を変更してください]

SELECT Arrival_time, TIME_FORMAT(ABS(TIMEDIFF(Arrival_time,CURRENT_TIME)),'%H hours left') as Waiting_Time FROM Time WHERE CAST(TIME_FORMAT(ABS(TIMEDIFF(Arrival_time,CURRENT_TIME)),'%H') as UNSIGNED INTEGER)>3

timediff値を使用して必要なものをすべて作成できます...ここでは、クエリは3時間よりも大きいdiffの行を返すだけです...

于 2013-03-26T13:23:17.903 に答える