在MySQL中比较date

我想比较两个给定date之间的数据库中的date。 数据库中的列是DATETIME,我只想将它与date格式进行比较,而不是date时间格式。

SELECT * FROM `players` WHERE CONVERT(CHAR(10),us_reg_date,120) >= '2000-07-05' AND CONVERT(CHAR(10),us_reg_date,120) <= '2011-11-10' 

我在执行上面的SQL时遇到这个错误:

你的SQL语法有错误; 检查与您的MySQL服务器版本相对应的手册,以在'us_reg_date,120'附近使用正确的语法)> ='2000-07-05'AND CONVERT(CHAR(10),us_reg_date,120)<='2011-'at第1行

这个问题怎么解决?

你可以试试下面的查询,

 select * from players where us_reg_date between '2000-07-05' and DATE_ADD('2011-11-10',INTERVAL 1 DAY) 

这是将date转换为string的SQL Server语法 。 在MySQL中,您可以使用DATE函数从date时间中提取date:

 SELECT * FROM players WHERE DATE(us_reg_date) BETWEEN '2000-07-05' AND '2011-11-10' 

但是,如果您想利用us_reg_date列上的索引,则可能需要尝试以下操作:

 SELECT * FROM players WHERE us_reg_date >= '2000-07-05' AND us_reg_date < '2011-11-10' + interval 1 day 

这适用于我:

 select date_format(date(starttime),'%Y-%m-%d') from data where date(starttime) >= date '2012-11-02'; 

请注意格式string“%Y-%m-%d”和inputdate的格式。

嘿家伙谢谢你的帮助,我得到了答案。

这里是代码…….

 SELECT * FROM table WHERE STR_TO_DATE(column, '%d/%m/%Y') BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y') AND STR_TO_DATE('07/10/15', '%d/%m/%Y') 

这是它对我的工作:

 select * from table where column BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y') AND STR_TO_DATE('07/10/15', '%d/%m/%Y') 

请注意,我必须更改STR_TO_DATE(列'%d /%m /%Y')以前的解决scheme,因为它正在花费时间来加载