【问题标题】:MYSQL ignore negitive time value in TIMEDIFFMYSQL 忽略 TIMEDIFF 中的负时间值
【发布时间】:2020-12-22 02:56:02
【问题描述】:

我正在开发一个需要手动输入来来去去时间的时间系统。 (不是我的系统)我正在为这个系统构建一个仪表板,它将显示现场的平均时间等等。因为它需要手动输入进出时间,所以可能会发生错误。如果有人在 18:00 签到但忘记打卡,系统会自动将打卡时间留在 0:00:00。

在计算我的平均值时,如果发生上述情况,那么它会计算在现场花费的平均时间并加上 -18:00 小时。这显然打破了整个计算。有没有办法让查询忽略任何否定来避免这种情况?

SELECT id, TIMEDIFF(`booking_time_out`, `booking_time`) AS 'Time_Spent'
FROM `table_name` 

【问题讨论】:

    标签: mysql sql datetime time


    【解决方案1】:

    否定结果标准是 0:00:00 预订时间的结果,因此在 where 标准中附加该行的排除项,例如:

    where booking_time_out != '0:00:00'

    【讨论】:

      【解决方案2】:

      你似乎想要一个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 的引用字符是反引号。

      【讨论】:

        猜你喜欢
        • 2014-09-18
        • 2012-01-23
        • 2011-02-19
        • 2011-01-11
        • 2011-10-08
        • 2019-10-22
        • 1970-01-01
        • 2016-10-13
        • 1970-01-01
        相关资源
        最近更新 更多