比较MySQL中的日期

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (30)

我想比较一个数据库中的日期,该数据库位于两个给定日期之间。数据库中的列是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”附近使用的正确语法。_雷吉_日期,120)=‘2000-07-05’并转换(Char(10),US_雷吉_日期,120)<=‘2011-’在第1行

如何解决这个问题呢?

提问于
用户回答回答于

可以尝试以下查询,

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

那就是SQLServer语法用于将日期转换为字符串。在MySQL中,可以使用日期函数从日期时间提取日期:

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

扫码关注云+社区