date_format“%H-%i-%s”与“%H:%i:%s”在CASE中给出了不同的结果

时间:2018-07-26 21:57:25

标签: mysql

我遇到了一个问题,即基于时间的条件无法正常工作

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

结果是:

results

请忽略“ 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之后的任何时间都可以。任何解释表示赞赏!

0 个答案:

没有答案