我遇到了一个问题,即基于时间的条件无法正常工作
CASE WHEN (date_format(scantime,'%H-%i-%S') >= '06:30:00') AND
(date_format(scantime,'%H-%i-%S') < '15:00:00') AND stationid = 919 THEN 1
ELSE 0 END
结果是:
请忽略“ 919”个值
如您所见,所有时间> 6:30但<7:00都标记为0而不是1。
我无法弄清楚,直到同事注意到时间值用“-”代替“:”。我切换到
CASE WHEN (date_format(scantime,'%H:%i:%S') >= '06:30:00') AND
(date_format(scantime,'%H:%i:%S') < '15:00:00') AND stationid = 919 THEN 1
ELSE 0 END
这解决了问题!唯一的是,为什么? 我不明白“-”将如何阻止条件被接受为真;也许只检查小时列?仍然没有什么意义,因为我们是> =而不是>。我们可以看到7:00之后的任何时间都可以。任何解释表示赞赏!