web-dev-qa-db-fra.com

Comparer les dates dans MySQL

Je souhaite comparer une date d'une base de données comprise entre 2 dates données ... La colonne de la base de données est DATETIME et je souhaite la comparer uniquement au format de date, pas au format de date/heure.

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'

Je reçois cette erreur lorsque j'exécute le code SQL ci-dessus:

Vous avez une erreur dans votre syntaxe SQL; Consultez le manuel correspondant à la version de votre serveur MySQL pour le bonne syntaxe à utiliser près de 'us_reg_date, 120)> =' 2000-07-05 'AND CONVERT (CHAR (10), us_reg_date, 120) <= «2011-» à la ligne 1

Comment ce problème peut-il être résolu?

66
NVG

Vous pouvez essayer ci-dessous la requête,

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

C’est La syntaxe SQL Server pour convertir une date en chaîne. Dans MySQL, vous pouvez utiliser la fonction DATE pour extraire la date d'un date/heure:

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

Mais si vous souhaitez tirer parti d'un index sur la colonne us_reg_date, essayez plutôt ceci:

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

Cela fonctionne pour moi:

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

Notez la chaîne de format '% Y-% m-% d' et le format de la date d'entrée.

7
Rahatur

hé les gars merci pour votre aide j'ai eu la réponse.

voici le code .......

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
Gurjeet Singh

voici ce que cela a fonctionné pour moi:

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

Veuillez noter que je devais changer STR_TO_DATE (colonne, '% d /% m /% Y') des solutions précédentes, car il fallait beaucoup de temps pour charger

0