[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: date BETWEEN pole1 AND pole2
logic
Подскажите пожалуйста,
SELECT * FORM `table` WHERE `data` BETWEEN '$date_from_user1' AND '$date_from_user2';

скажите так и должно быть что если в БД есть всего две записи от 30 сентября и от 3 октября, и если я через форму подставляю в $date_from_user1 = 30.09.2011, а в $date_from_user2 = 03.10.2011, даю запрос, и мне выдает ответ только с записью от 30.09.2011. НО если $date_from_user2 = 04.10.2011, то и вторую запись выводит тогда. В чем может быть ошибка, или эта функция так и работает ?
(data поле типа datetime)
спасибо



Спустя 55 минут, 15 секунд (3.10.2011 - 16:47) linker написал(а):
Хочешь чтоб работало, тогда храни даты в виде 2011-09-30, только та и никак иначе.

Спустя 8 часов, 23 минуты, 50 секунд (4.10.2011 - 01:11) logic написал(а):
linker
они в БД так и хранятся......это просто я их ввожу в таком виде дд.мм.гггг , а потом привожу их к виду гггг-мм-дд , но работает как то криво

Спустя 29 минут, 9 секунд (4.10.2011 - 01:40) neadekvat написал(а):
1. Назови поле date, т.к. data - это данные, а не дата.
2. BETWEEN должен вернуть и указанные "крайние" параметры, если таковые имеются в базе.
Кстати, почему поле datetime, а не date?

Спустя 6 часов, 23 минуты, 55 секунд (4.10.2011 - 08:04) linker написал(а):
neadekvat
Потому что DATE - хранит только дату, а DATETIME (сам догадайся) - дату и время. Если время не нужно, то нафига его хранить.

neadekvat
Вот такой запрос
SELECT * FORM `table` WHERE `data` BETWEEN '2011-03-03' AND '2011-10-04'
будет правильным, а теперь сравни со своим запросом.

Спустя 2 часа, 32 минуты, 7 секунд (4.10.2011 - 10:36) logic написал(а):
спасибо вам,
набудущее буду хранить время и дату отдельно как date и time.
Проблему так и решил, что поле datetime поменял на date и создал ещё оно поле с типом данных time куда и сохраняется отдельно время. Видимо так правильнее.

СПАСИБО (+,+)!

Спустя 1 час, 25 минут, 30 секунд (4.10.2011 - 12:02) neadekvat написал(а):
Цитата (linker @ 4.10.2011 - 09:04)
Потому что DATE - хранит только дату, а DATETIME (сам догадайся) - дату и время. Если время не нужно, то нафига его хранить.

Нее.. я спросил у автора, почему он использовал datetime, хотя манипулирует только с датой.

logic, по-моему, можно сделать так (при поле datetime, и при том, что тебе время тоже нужно хранить):

SELECT * FORM `table` WHERE DATE(`data`) BETWEEN '2011-03-03' AND '2011-10-04'

Спустя 13 минут, 15 секунд (4.10.2011 - 12:15) linker написал(а):
neadekvat
Аааа, это пункт у ТС я упустил.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.