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

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

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

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

На коленях перед ЗОД
источник
12

Попробуй это.

SELECT * FROM la_schedule WHERE `start_date` > '2012-11-18';
Файзан Хаттак
источник
2

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

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';
beatusfk
источник
0

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

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

Ссылка

Суреш Кераи
источник