¿Cómo usar un operador mayor que con fecha?

106

No tengo idea de lo que está pasando aquí. Aquí está la consulta, directamente desde phpMyAdmin:

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

Pero siempre obtengo todos los registros de la tabla, incluidos aquellos con fecha de inicio 2012-11-01. ¿Lo que da?

Clinton J
fuente
1
¿Su columna start_date es de tipo fecha o marca de tiempo?
Shamis Shukoor

Respuestas:

190

ha encerrado start_datecon comillas simples haciendo que se convierta en una cadena, use backticken su lugar

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';
John Woo
fuente
1
¿Qué pasa si su marca de tiempo?
ichimaru
Cabe señalar que MySQL parece un poco exigente con el formato de fecha; mientras que 2019/02/08 21:04:07 o 2019-02-08 21:04:07 produce el resultado esperado, 02-08-2019 21:04:07, utilizando el formato de fecha de EE. UU., arroja una red mucho más amplia .
David A. Gray
22

En su declaración, está comparando una cadena llamada fecha_inicio con la hora.
Si start_date es una columna, debería ser

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

(sin apóstrofo) o


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

(con comillas invertidas).

Espero que esto ayude.

Arrodíllate ante Zod
fuente
12

Prueba esto.

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

En mi caso, mi columna era una fecha y hora y seguía dándome todos los registros. Lo que hice fue incluir el tiempo, vea el ejemplo a continuación

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';
Beatusfk
fuente
0

Lo intenté pero no funcionó después de que la investigación encontrara debajo de la solución.

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

Árbitro

Suresh Kerai
fuente