首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:无法正确比较字符串值作为日期

MySQL:无法正确比较字符串值作为日期
EN

Stack Overflow用户
提问于 2017-10-07 20:14:04
回答 1查看 24关注 0票数 0

我正在尝试显示介于两个范围之间的行。这两个范围将是日期。其中一列以"8-10-2017 / 05:00 AM“的格式将日期存储为字符串,以便比较使用以下查询的值:

代码语言:javascript
复制
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的时候,它就不再返回它们了。我知道我正在传递的日期格式有问题。但我一直没能弄清楚。我也见过类似的问题,但没有一个对我有用。

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-07 20:22:40

您实际上应该将日期/时间存储为datetime,而不是字符串。使用错误的数据类型只会使后续工作更加困难。

MySQL通常采用ISO标准格式的日期常数YYYY,因此尝试如下:

代码语言:javascript
复制
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'  
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46624685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档