Intereting Posts

проблемы с DATETIME в базе данных

Я разработал следующий код; для расчета времени ожидания и ожидаемого времени для пациента. Код также должен повторять предупреждение, если пациент слишком долго ждал.

Обратите внимание: Waiting_time – DATETIME в базе данных.

Вот код;

<?php $conn = mysqli_connect("localhost","root","") or die ("No connection"); mysqli_select_db($conn, "a&e") or die('Could not select database.'); $query = "SELECT PatientID, Forename, Surname, Gender, Illness, Priority, Arrival_time,NOW() as now,ABS(TIMEDIFF(NOW(), Arrival_time)) as Waiting_Time FROM Patient"; $result = mysqli_query($conn, $query) or die("Invalid query"); echo "<table border='1'> <tr> <th>PatientID</th> <th>Forename</th> <th>Surname</th> <th>Gender</th> <th>Illness</th> <th>Priority</th> <th>Waiting Time</th> </tr>"; while ($row = $result->fetch_object()){ //Select the expected and discharge time for this patient. $query2 = "SELECT Abs(TIMEDIFF(Expected_Time,'00:00:00')) as Expected,Abs(TIMEDIFF(Discharge_Time,'00:00:00')) as Discharge ". "FROM priority_time ". "WHERE Illness = '".$row->Illness."'". " AND Priority = '".$row->Priority."'". ";"; $result2 = mysqli_query($conn, $query2) or die("Invalid statement: ".$query2); $row2 = $result2->fetch_object(); $expected = $row2->Expected; $discharge = $row2->Discharge; echo "expected-> ".$expected." discharge-> ".$discharge; if($expected > $discharge){ echo "There is a problem with the database consistency, expectedTime must be less than dischargeTime!"; } //Set the patient color. if($row->Waiting_Time < $expected && $row->Waiting_Time < $discharge){ echo "<tr>"; } if($row->Waiting_Time >= $expected && $row->Waiting_Time < $discharge){ echo '<tr bgcolor="#FFFF00">'; } if($row->Waiting_Time > $expected && $row->Waiting_Time > $discharge){ echo '<tr bgcolor="#FF0000">'; } //Print patient info echo "<td>" . $row->PatientID . "</td> <td>" . $row->Forename . "</td> <td>" . $row->Surname . "</td> <td>" . $row->Gender . "</td> <td>" . $row->Illness . "</td> <td>" . $row->Priority . "</td> <td>" . $row->Waiting_Time . "(".$expected."-".$discharge.") </td>"; //Close row echo "</tr>"; } echo "</table>"; mysqli_close($conn); ?> 

EDIT: в каждой строке в столбце Время ожидания отображается время ожидания в секундах, а в скобках – текущее время минус и время прибытия, только для проверки. Как преобразовать время ожидания в формат hh: mm: ss, чтобы иметь лучшее представление для пользователя?

Показаны;

 Waiting time 01:15:42(10500.000000-10500.000000) 

Почему он отображает (10500.000000-10500.000000)?

Попробуй это:

 gmdate("H:i:s", $seconds) 

Если это не работает, посмотрите, как конвертировать секунды в формат времени?

Обновить:

Чтобы сделать это в SQL-запросе, попробуйте что-то вроде этого:

 SELECT TIME_TO_SEC(TIMEDIFF('2013-03-27 12:00:00', '2013-03-27 10:00:00')) diff; 

Так что-то вроде этого:

 SELECT PatientID , Forename , Surname , Gender , Illness , Priority , Arrival_time , NOW() as now , TIME_TO_SEC(TIMEDIFF(NOW(), Arrival_time)) as Waiting_Time FROM Patient; 

Затем вы измените эту строку:

 <td>" . $row->Waiting_Time . "(".$expected."-".$discharge.") </td> 

к этому:

 <td>" . gmdate("H:i:s", $row->Waiting_Time) . "(".$expected."-".$discharge.") </td> 

Когда речь идет о датах и ​​времени в php strtotime (), это ваш самый большой друг. Lucky функция date () – это все, что вам нужно для этого. То, что собирается конвертировать секунды в читаемый формат, может быть следующим.

 $time = strtotime('now'); echo $time . '<br />'; $var = date('H:i:s',$time); echo $var;