Comparar as datas no MySQL

quero comparar uma data de uma base de dados que esteja entre 2 datas indicadas. A coluna da base de dados é DATETIME, e eu quero compará-la apenas ao formato de data, não ao formato 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'

recebo este erro quando executo o SQL acima:

você tem um erro na sua sintaxe SQL; verifique o manual que corresponde a sua versão do servidor de MySQL para a sintaxe direita a usar próximo "us_reg_date, 120) > = "2000-07-05" e CONVERT(CHAR (10),us_reg_ date,120) <= "2011 -" na linha 1

Como é que este problema pode ser resolvido?

Author: Cœur, 2010-09-06

5 answers

Você pode tentar abaixo da consulta,

select * from players
where 
    us_reg_date between '2000-07-05'
and
    DATE_ADD('2011-11-10',INTERVAL 1 DAY)
 95
Author: Nik, 2011-05-21 16:45:43

Isto é a sintaxe do servidor SQL para converter uma data para um texto. No MySQL você pode usar a função DATE para extrair a data a partir de uma datetime:

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

Mas se quiser tirar partido de um índice na coluna {[2] } , pode tentar isto em vez disso:

SELECT *
FROM players
WHERE us_reg_date >= '2000-07-05'
  AND us_reg_date < '2011-11-10' + interval 1 day
 89
Author: Mark Byers, 2010-09-06 14:08:51
Isto funciona comigo.
select date_format(date(starttime),'%Y-%m-%d') from data
where date(starttime) >= date '2012-11-02';

Repare no texto de formato '%Y-%m-%d' e no formato da data de entrada.

 11
Author: Rahatur, 2013-12-30 09:07:02
Tenho a resposta.

Aqui está o código:

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')
 6
Author: Gurjeet Singh, 2020-11-03 12:30:19
Isto é o que funcionou para mim.
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')

Por favor, note que tive de alterar o STR_ TO_DATE (coluna, '%d/%m/%Y') das soluções anteriores, dado que estava a levar idades a carregar

 3
Author: Iria, 2017-11-07 08:34:47