当字段是varchar时,我可以从mysql中选择特定的日期范围吗?

时间:2014-05-22 08:57:31

标签: mysql

我想使用以下代码:

sql = "SELECT * FROM Schedule 
WHERE SCH_AgentID = "&AgentDB("AGT_ID")&" 
AND STR_TO_DATE(SCH_SubmitDate, '%m/%d/%Y') BETWEEN DATE_SUB(CURDATE(), INTERVAL 6 MONTH) AND CURDATE()"

或类似的,我尝试了一些变种,我怀疑应该可以正常工作,但不会返回任何结果,也没有错误。如果我删除语句的6个月末,它会正确返回所有结果。

我认为唯一可能导致问题的是SCH_SubmitDate是一个varchar字段,因为问题是mysql以英文格式存储进程和返回日期。

任何人都知道这可能是问题,是否有解决方法?

1 个答案:

答案 0 :(得分:1)

如果没有看到实际的SQL数据,很难看出此查询中的问题所在。但是,看起来您的基本问题是您希望只获取任何字符串日期并将其存储在数据库中。

如果您尝试以不知道的格式存储日期,则不是MySQL的问题。您应该始终将您获得的任何日期转换为MYSQL可以理解的格式,即yyyy-mm-dd

不这样做只会让你以后遇到麻烦。就像在这里一样。

我的建议是创建一个DATE类型的新列来存储日期,然后尝试使用STR_TO_DATE填充这些日期。很可能不是每个日期都会正确转换,这些都是你的问题。