Mysql< =提供错误的输出

时间:2016-06-11 06:49:08

标签: mysql database

我的表

moment('Jan', 'MMM').format('MMMM')

如果我想在10:30到12:30之间选择ID,请使用以下命令

starttime   |   endtime  |   id

10:30            11:30        1
11:30            12:30        2
14:30            16:30        3
15:30            16:30        4 

这给了我唯一的身份1,但没有给我2,如果我改变12:30到12:40它给了我1& 2.BUt我用得少或平等所以它应该给我两个身份对吗?为什么它不那样工作?

1 个答案:

答案 0 :(得分:1)

问题是您正在尝试将日期对象与字符串进行比较。确切地说,在下面的表达式中

STR_TO_DATE(starttime,'%H:%i') >= '10:30'

STR_TO_DATE会返回一个日期,但'10:30'只是一个varchar(看起来像是一个时间)。如果您想继续沿着这条路走下去,您应该使用STR_TO_DATE

投射比较的两边
SELECT id
FROM table
WHERE STR_TO_DATE(starttime,'%H:%i') >= STR_TO_DATE('10:30','%H:%i') AND
      STR_TO_DATE(endtime,'%H:%i') <= STR_TO_DATE('12:30','%H:%i');

但长期更好的做法是将starttimeendtime列设为DATETIMETIMESTAMP

SQLFiddle