【问题标题】:How to display only the negative values, and make all the positive values display as 0?如何只显示负值,使所有正值显示为0?
【发布时间】:2016-02-10 17:07:57
【问题描述】:

我写了一个查询来显示这个数据,最后一列使用这个查询给出了数据。

TIMESTAMPDIFF(MINUTE,booking_activity.activity_time,booking.pick_up_time) AS ActualWaitingTime

现在,我只需要显示负值,所有正值都应该变成 0。

应该如何编辑这个查询?

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

    试试:

    CASE
         WHEN TIMESTAMPDIFF(MINUTE,booking_activity.activity_time,booking.pick_up_time) < 0 
              THEN TIMESTAMPDIFF(MINUTE,booking_activity.activity_time,booking.pick_up_time)
         ELSE 0
    END AS ActualWaitingTime
    

    【讨论】:

    • 但是我不想显示'-'符号,有没有办法做到这一点?
    • 你可以这样包裹它THEN REPLACE(TIMESTAMPDIFF(MINUTE,booking_activity.activity_time,booking.pick_up_time),'-','')
    • 虽然@KayNelson 的方法有效,但它返回一个字符串,使用 ABS() 更好。
    • ...或乘以 -1 或反转两个日期参数。还有greatest(0, ...)...
    【解决方案2】:

    您可以使用 CASE 函数将任何大于或等于零的值设为零

    或者在您的 WHEN 子句中只返回小于零的值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 2014-08-28
      • 2018-08-08
      • 2016-11-06
      • 1970-01-01
      • 2018-06-01
      相关资源
      最近更新 更多