比较MySQL中的日期

NVG*_*NVG 81 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'
Run Code Online (Sandbox Code Playgroud)

我执行上面的SQL时遇到此错误:

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

如何解决这个问题?

Mar*_*ers 83

这是用于将日期转换为字符串的SQL Server语法.在MySQL中,您可以使用DATE函数从日期时间中提取日期:

SELECT *
FROM players
WHERE DATE(us_reg_date) BETWEEN '2000-07-05' AND '2011-11-10'
Run Code Online (Sandbox Code Playgroud)

但是如果你想利用列上的索引,us_reg_date你可能想要尝试这样做:

SELECT *
FROM players
WHERE us_reg_date >= '2000-07-05'
  AND us_reg_date < '2011-11-10' + interval 1 day
Run Code Online (Sandbox Code Playgroud)


Nik*_*Nik 79

您可以尝试以下查询,

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

  • 对于来自谷歌的人:mysql中的日期类型以yyyy-mm-dd格式出现. (26认同)

Rah*_*tur 8

这对我有用:

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

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


小智 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')
Run Code Online (Sandbox Code Playgroud)