我的表
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我用得少或平等所以它应该给我两个身份对吗?为什么它不那样工作?
答案 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');
但长期更好的做法是将starttime
和endtime
列设为DATETIME
或TIMESTAMP
。