2013-06-16 2 views
0
CREATE TABLE `reservation` 
(
    `name` VARCHAR(255), 
    `from` DATE, 
    `to` DATE 
); 

INSERT INTO RESERVATION VALUES ('aaa', '2013-04-23', '2013-05-06'); 
INSERT INTO RESERVATION VALUES ('bbb', '2013-04-01', '2013-08-06'); 
INSERT INTO RESERVATION VALUES ('ccc', '2013-05-12', '2013-05-19'); 
INSERT INTO RESERVATION VALUES ('ddd', '2013-06-01', '2013-07-27'); 
INSERT INTO RESERVATION VALUES ('eee', '2013-06-23', '2013-07-06'); 
INSERT INTO RESERVATION VALUES ('fff', '2013-07-23', '2013-08-09'); 

SELECT * FROM reservation WHERE 'from' <= '2013-07-01' AND 'to' >= '2013-07-01' 

Прямой эфир: http://sqlfiddle.com/#!2/80d9cd/2Почему этот SQL-запрос с DATE не работает?

Я хотел бы получить все записи с периодом 2013-07. Этот запрос должен возвращать мне:

2 | bbb | 2013-04-01 | 2013-08-06 
4 | ddd | 2013-06-01 | 2013-07-27 
5 | eee | 2013-06-23 | 2013-07-06 
6 | fff | 2013-07-23 | 2013-08-09 

потому, что период 2013-07 является> к и < из в этой записи. Почему это возвращает мне 0 записей? Как я могу получить эти записи с помощью SQL?

ответ

1

здесь работает один

http://sqlfiddle.com/#!2/80d9cd/5

вы from и to зарезервированы MySQL ключевое слово Вам необходимо вокруг него обратные кавычки

4

Ваши имена столбцов не должны быть в кавычках. Они должны быть в клещах:

SELECT * 
FROM reservation 
WHERE `from` <= '2013-06-01' 
AND `to` >= '2013-06-01' 

http://sqlfiddle.com/#!2/80d9cd/3

Смежные вопросы