Как использовать оператор больше чем с датой?


106

Понятия не имею, что здесь происходит. Вот запрос прямо из phpMyAdmin:

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

Но я постоянно получаю все записи в таблице, включая записи с датой начала 2012-11-01. Что дает?


1
Ваш столбец start_date имеет тип date или timestamp?
Шамис Шукур

Ответы:


191

вы заключили в start_dateодинарную кавычку, заставив ее стать строкой, используйте backtickвместо этого

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

1
что произойдет, если его отметка времени?
ichimaru

Следует отметить, что MySQL кажется немного разборчивым в отношении формата даты; в то время как либо 2019/02/08 21:04:07, либо 2019-02-08 21:04:07 дает ожидаемый результат, 02-08-2019 21:04:07, используя формат даты США, отбрасывает гораздо более широкую сеть .
Дэвид А. Грей

22

В вашем заявлении вы сравниваете строку с именем start_date со временем.
Если start_date - столбец, он должен быть

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

(без апострофа) или


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

(с обратными кавычками).

Надеюсь это поможет.



2

В моем случае моя колонка была датой и временем, она давала мне все записи. Я добавил время, см. Пример ниже.

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

0

Я пробовал, но выше не работал после исследования, найденного ниже решения.

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

Ссылка

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.