MySQL выбрать между двумя датами не работает, как ожидалось - PullRequest
1 голос
/ 08 июня 2011

Я пытаюсь создать запрос, который будет выбирать все даты между двумя датами
Это мой запрос:

$query = "SELECT DISTINCT * FROM D1,D2
    WHERE D1.DATE_ADDED BETWEEN '$date1' AND '$date2' AND D1.D1_ID = D2.D2_ID";

Беда в том, что он ничего не возвращает, но и не выдает ошибку

Итак, я попытался ввести его прямо в phpMyAdmin следующим образом

SELECT DISTINCT * FROM D1,D2
    WHERE D1.DATE_ADDED BETWEEN '2011-01-01' AND '2011-12-12'
        AND D1.D1_ID = D2.D2_ID`

тогда вот так

SELECT DISTINCT * FROM D1,D2
    WHERE D1.DATE_ADDED BETWEEN '2011-01-01' AND '2011-12-12'

и вот так

SELECT * FROM D1
    WHERE DATE_ADDED BETWEEN '2011-01-01' AND '2011-12-12'

и я просто получаю

MySQL возвратил пустой набор результатов (то есть ноль строк). (Запрос занял 0,0003 секунды)

Да, мои таблицы существуют, как и столбцы:)

Ответы [ 3 ]

1 голос
/ 08 июня 2011

В первых случаях отсутствие результатов может быть связано с внутренним объединением. Для того чтобы результат был в наборе, потребуется запись в обеих таблицах, т.е. запись из d1 не появится, если только d2 не имеет этот идентификатор в столбце d2_id. Чтобы решить эту проблему, если это правильно для вашей бизнес-логики, используйте left join.

Однако последний из ваших случаев (без объединения) предполагает, что причина заключается в отсутствии соответствующих записей в первой (левой) таблице d1.

Без полного набора данных мы не сможем комментировать дальше, так как весь код, который вы запускаете, абсолютно корректен.

0 голосов
/ 08 июня 2011

Пожалуйста, введите ниже код

SELECT DISTINCT * FROM D1,D2
    WHERE D1.DATE_ADDED BETWEEN DATE_FORMAT('2011-01-01','%Y-%m-%d')
        AND DATE_FORMAT('2011-12-12','%Y-%m-%d')
        AND D1.D1_ID = D2.D2_ID`
0 голосов
/ 08 июня 2011

Если вы всегда хотите выбрать целый год, проще выбрать его следующим образом:

SELECT * FROM D1 WHERE YEAR(DATE_ADDED) = 2011;

...