MYSQL: Between或Equal

3

如果我的两个值相同,并且我已经使用了等于运算符,为什么它不起作用?用户需要从“开始”和“结束”中选择日期,如果用户选择相同的日期,例如2017-08-13,它仍应显示所有2017-08-13的日期,但不幸的是,它无法正常工作。

SELECT * FROM master_data.speed_of_service where 
( trans_time >= '2017-08-13' and 
trans_time <= '2017-08-13')

只有在日期之间存在间隔时才能起作用。


你能分享一下表结构吗? - Tucker
该列是否也存储时间? - juergen d
1个回答

5

如果我必须猜测的话,那是因为trans_time有一个时间组件。一个简单的解决方法是提取日期:

SELECT ss.*
FROM master_data.speed_of_service ss
WHERE date(trans_time) >= '2017-08-13' and date(trans_time) <= '2017-08-13';

更好的解决方案是将“to”日期加一天:
SELECT ss.*
FROM master_data.speed_of_service ss
WHERE trans_time >= '2017-08-13' AND
      trans_time < '2017-08-13' + interval 1 day;

这样做更好,因为它仍然允许使用索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接