Como usar maior que operadora com data?

106

Não faço ideia do que está acontecendo aqui. Aqui está a consulta, diretamente do phpMyAdmin:

SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';

Mas recebo consistentemente todos os registros na tabela retornados, incluindo aqueles com data de início 01-11-2011. O que da?

Clinton J
fonte
1
A sua coluna start_date é do tipo data ou carimbo de data / hora?
Shamis Shukoor

Respostas:

190

você enlosed start_datecom aspas simples tornando-a corda, utilizar backtickem vez

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';
John Woo
fonte
1
o que acontece se for carimbo de data / hora?
ichimaru
É importante notar que o MySQL parece um pouco exigente quanto ao formato de data; enquanto 2019/02/08 21:04:07 ou 2019-02-08 21:04:07 produz o resultado esperado, 02-08-2019 21:04:07, usando o formato de data dos EUA, lança uma rede muito mais ampla .
David A. Gray
22

Em sua declaração, você está comparando uma string chamada start_date com a hora.
Se start_date for uma coluna, deve ser

 
  SELECT * FROM `la_schedule` WHERE start_date >'2012-11-18';
 

(sem apóstrofo) ou


SELECT * FROM `la_schedule` WHERE `start_date` >'2012-11-18';

(com backticks).

Espero que isto ajude.

Ajoelhe-se diante de Zod
fonte
12

Experimente isso.

SELECT * FROM la_schedule WHERE `start_date` > '2012-11-18';
Faizan Khattak
fonte
2

No meu caso, minha coluna era uma data e ela me dava todos os registros. O que fiz foi incluir o tempo, veja o exemplo abaixo

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';
beatusfk
fonte
0

Eu tentei, mas acima não funcionou depois de pesquisas encontradas abaixo da solução.

SELECT * FROM my_table where DATE(start_date) > '2011-01-01';

Ref

Suresh Kerai
fonte