我在一个时间系统上工作,需要手动输入来和去的时间。(不是我的系统)我正在为这个系统建立一个仪表板,将显示平均时间在现场和更多。因为它需要手动输入来去时间,所以可能会发生错误。如果有人在18:00签到但忘记了打卡,系统会自动将时钟时间留在0:00:00。
在计算我的平均值时,如果出现上述情况,则它会计算在站点上花费的平均时间,并加上-18:00小时。这显然打破了整个计算。有没有一种方法可以让查询忽略任何否定来避免这种情况?
SELECT id, TIMEDIFF(`booking_time_out`, `booking_time`) AS 'Time_Spent'
FROM `table_name` 发布于 2020-09-03 05:55:17
负结果条件是0:00:00预订时间的结果,因此在where条件中附加排除该行,如下所示:
where booking_time_out != '0:00:00'
发布于 2020-09-03 05:59:08
您似乎想要一个case表达式:
select id,
case when timediff(`booking_time_out`, `booking_time`) < 0
then 0
else timediff(`booking_time_out`, `booking_time`)
end as time_spent
from tablename附注:不要用单引号将标识符括起来(就像在as 'Time_spent'中一样)。在标准SQL中,单引号代表文字字符串。另一方面,您通常不需要引用标识符(除非它的名称选择得很糟糕)-如果需要的话,MySQL的引号字符是反引号。
https://stackoverflow.com/questions/63713991
复制相似问题