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:
Como é que este problema pode ser resolvido?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
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)
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
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.
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')
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