比较MySQL中的日期

时间:2010-09-06 13:51:27

标签: mysql sql comparison

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

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)&gt; ='2000-07-05'AND   CONVERT(CHAR(10),us_reg_date,120)&lt; =   '2011-'在第1行

如何解决这个问题?

5 个答案:

答案 0 :(得分:78)

用于将日期转换为字符串的SQL Server syntax。在MySQL中,您可以使用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

答案 1 :(得分:72)

您可以尝试以下查询,

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

答案 2 :(得分:8)

这对我有用:

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

请注意格式字符串'%Y-%m-%d'和输入日期的格式。

答案 3 :(得分:6)

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

这是代码.......

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')

答案 4 :(得分:0)

这对我有用:

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(列,&#39;%d /%m /%Y&#39;),因为它需要花费很长时间才能加载