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_TIMEorCURTIME()代替NOW()

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

[编辑]
因为NOW()DATETIME,所以不仅仅是时间。MySQL 文档

[添加]
您可以使用TIME_FORMAT(time_diff, '%H hours')来获取小时数。
并删除-, addABS()方法来获取绝对值:

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 小时的行...

于 2013-03-26T13:23:17.903 回答