Як використовувати більше, ніж оператор з датою?


106

Поняття не маю, що тут відбувається. Ось запит прямо від phpMyAdmin:

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

Але я постійно отримую повернуті всі записи в таблиці, включаючи записи з датою початку 2012-11-01. Що дає?


1
Ваш стовпець start_date типу дати чи часової позначки?
Шаміс Шукоор

Відповіді:


190

ви додали start_dateєдину цитату, внаслідок чого вона стала рядком, використовуйте backtickнатомість

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

1
що станеться, якщо її часова мітка?
ічімару

Слід зазначити, що MySQL здається трохи прискіпливим до формату дати; тоді як або 02.02.2018 21:04:07 або 2019-02-08 21:04:07 очікуваний результат, 08.02.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.