¿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?


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

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.



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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.