如何解决MYSQL忽略TIMEDIFF中的负时间值
我正在使用一个需要手动输入来回时间的时间系统。 (不是我的系统)我正在为此系统构建一个仪表板,该仪表板将显示平均在现场的时间等等。由于它需要手动输入的进出时间,因此可能会发生错误。如果有人在18:00时办理登机手续,但忘记了上班时间,则系统会在0:00:00时自动退出上班时间。
在计算我的平均值时,如果发生上述情况,那么它将计算在现场花费的平均时间,并加上-18:00小时。这显然破坏了整个计算。有没有一种方法可以让查询忽略任何否定词来避免这种情况?
SELECT id,TIMEDIFF(`booking_time_out`,`booking_time`) AS 'Time_Spent'
FROM `table_name`
解决方法
否定结果标准是0:00:00
预订时间的结果,因此请将该行的排除附加在where条件中,例如:
where booking_time_out != '0:00:00'
您似乎想要一个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的引用字符是反引号。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。