用于查找时差的 SQL 计算 [英] SQL calculation for finding time difference

查看:51
本文介绍了用于查找时差的 SQL 计算的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已使用 (NOW) 函数获取当前 TIME 并将其作为到达时间"插入到数据库中.

I have used the (NOW) function to get the current TIME and insert into database as "Arrival Time."

如下图所示:

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

类型为时间,插入为;

12:17:29

我需要通过(当前时间 - 到达时间)来计算等待时间;

I need to calculate waiting time by (current time - arrival time);

示例:当前时间 (13:15) 到达时间 (12:15)

Example: Current time (13:15) Arrival Time (12:15)

所以这将显示:

Waiting time 
1 hour 

以下是我尝试过的解决方案;

Here are the solutions Ive tried;

<?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 小时,提示接下来必须看这个病人!".

How would I use time so that if; waiting_time exceeds 3 hours, alert "This patient must be seen next!".

推荐答案

您可以尝试使用 CURRENT_TIMECURTIME() 代替 NOW():

You can try to use CURRENT_TIME or CURTIME() instead of NOW() :

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


因为 NOW()DATETIME,所以它不仅仅是时间.MySQL 文档


Because NOW() is a DATETIME, it's not just the time. MySQL Doc

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

[ADD]
You can use TIME_FORMAT(time_diff, '%H hours') to get hours.
And to remove the -, add ABS() method to get the absolute value :

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

[如果 timediff > 3 则更改返回值]

[Change return value if 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 值制作您想要的所有内容...这里,查询仅返回 diff 大于 3 小时的行...

You can make all you want with the timediff value... Here, The query just return rows with a diff greater than 3 hours...

这篇关于用于查找时差的 SQL 计算的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆