数据库中DATETIME的问题 [英] issues with DATETIME in database
问题描述
我设计了以下代码;计算患者的等待时间和预期时间.如果患者等待时间过长,该代码还应回显警告.
I have devised the following code; to calculate the waiting time and expected time for a patient. The code should also echo a warning if the patient has been waiting too long.
请注意:数据库中的Waiting_time是DATETIME.
Please note: Waiting_time is DATETIME in the database.
这是代码;
<?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);
?>
在每一行的等待时间"列中,以秒为单位显示等待时间,括号中的currentTime为负数和到达时间,仅用于检查.如何将等待时间转换为hh:mm:ss格式,以便为用户提供更好的表示方式?
On each row, in the column Waiting Time it is showing the waiting time in seconds, and in brackets the currentTime a minus and the arrival time, just for checking. How do I convert the waiting time to the format hh:mm:ss to have a better representation for the user?
显示;
Waiting time
01:15:42(10500.000000-10500.000000)
为什么显示(10500.000000-10500.000000)?
Why is it displaying (10500.000000-10500.000000)?
推荐答案
尝试一下:
gmdate("H:i:s", $seconds)
如果这不起作用,请查看如何转换秒数时间格式?
If that doesn't work, have a look at How to convert seconds to time format?
更新:
要在SQL语句中执行此操作,请尝试以下操作:
To do this in the SQL statement try something like this:
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>
这篇关于数据库中DATETIME的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!