我正在尝试显示介于两个范围之间的行。这两个范围将是日期。其中一列以"8-10-2017 / 05:00 AM“的格式将日期存储为字符串,以便比较使用以下查询的值:
SELECT * FROM `Game` WHERE (Home_School_Name = 'Paarl Boys' OR Away_School_Name = 'Paarl Boys') && Status = 'NOT STARTED' && STR_TO_DATE(LEFT(Start_Time,LOCATE(' ',Start_Time)),'%m-%d-%Y') BETWEEN '2017-8-10' AND '2017-15-10' 现在有两场比赛应该在结果中得到回报。8-10-2017年,9-10-2017年。当我发送的范围为2017-1-10和2017-8-10,它显示了第一场比赛。当我尝试2017-8-10和2017-8-12。它同时显示了这两个游戏。但是当我超过12的时候,它就不再返回它们了。我知道我正在传递的日期格式有问题。但我一直没能弄清楚。我也见过类似的问题,但没有一个对我有用。
任何帮助都是非常感谢的。
发布于 2017-10-07 20:22:40
您实际上应该将日期/时间存储为datetime,而不是字符串。使用错误的数据类型只会使后续工作更加困难。
MySQL通常采用ISO标准格式的日期常数YYYY,因此尝试如下:
SELECT g.*
FROM `Game` g
WHERE 'Paarl Boys' IN (Home_School_Name, Away_School_Name = 'Paarl Boys') AND
g.Status = 'NOT STARTED' &
STR_TO_DATE(LEFT(Start_Time, LOCATE(' ', Start_Time)), '%d-%m-%Y') BETWEEN '2017-10-08' AND '2017-10-15' https://stackoverflow.com/questions/46624685
复制相似问题