Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Выборка по дате в базе

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Russian_Admin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть таблица в базе которая имеет колонку с типом text, называется date, имеет такой вид:
11.02.2013
24.05.2013
31.07.2013
13.01.2014
28.03.2014
18.03.2015
26.07.2015
Мне нужно сделать выбор с определенной даты по конкретную, делал так но ничего неполучается:
$query = mysqli_query($db, "SELECT id, date FROM tblName WHERE date>='$data_from' AND date<='$data_to' ORDER BY id DESC") or trigger_error("Query Failed: " . mysqli_error());
$query = mysqli_query($db, "SELECT id, date FROM tblName BETWEEN '$data_from' AND '$data_to' ORDER BY id DESC") or trigger_error("Query Failed: " . mysqli_error());
Выводит но выводит неправильно, причем в переменные $data_from и $data_to может попасть дата которой может и не быть в базе, подскажите что я делаю не так ?

Всего записей: 5 | Зарегистр. 09-06-2014 | Отправлено: 18:45 26-07-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Russian_Admin
не вы спрашивали? Воборка по возрасту
на будущее - есть тема
MySQL Помогите составить запрос
или
MySql/PHP: общие вопросы
 
а делаете все не так. во первых, даты лучше хранить не в текстовом виде, а в столбце соответствующего типа (date)
 
во вторых, раз уж пытаетесь хранить в текстовом виде, то записывать нужно в правильном формате, иначе как вы будете определять что больше, а что меньше?  
в случае строк идет посимвольное сравнение слева направо, то есть в вашем случае сначала сравниваются даты, игнорируя месяцы и годы, затем месяцы, игнорируя годы и так далее.
если уж хотите в текстовом виде, то храните даты в виде YYYYMMDD, где между YYYY, MM, DD могут быть любые разделители, одинаковые для всех записей.
 
тогда сначала будет сравниваться год, затем месяц, и только потом уже число.

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 19:30 26-07-2015 | Исправлено: Mavrikii, 19:30 26-07-2015
Russian_Admin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дата сохраняется в базу в таком формате 26.07.2015, тоесть уже с разделителями.

Всего записей: 5 | Зарегистр. 09-06-2014 | Отправлено: 19:55 26-07-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Russian_Admin

Цитата:
Дата сохраняется в базу в таком формате 26.07.2015, тоесть уже с разделителями.

значит создайте еще один столбец, и пересохраняйте туда в нужном виде.
иначе придется над каждой записью, при каждом запросе, работать с форматированием или преобразованием в тип даты, что будет замедлять запрос и нагружать сервер.

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 19:57 26-07-2015
Russian_Admin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Изменил тип на DATE теперь все даты стали такого вида 20.03.2018 на много лет вперед, как мне сохранять даты именно в таком формате 26.07.2015, у меня jquery ui datepicker в поле вставляет именно в таком формате, а как в php сохранять в базу ?

Всего записей: 5 | Зарегистр. 09-06-2014 | Отправлено: 20:22 26-07-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Russian_Admin

Цитата:
а как в php сохранять в базу  

преобразовывать в нужный формат YYYY-MM-DD

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 20:36 26-07-2015
Russian_Admin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
преобразовывать в нужный формат YYYY-MM-DD

 Так оно у меня уже вот в таком формате 26.07.2015 сохраняет в базу, только разделитель точка.

Всего записей: 5 | Зарегистр. 09-06-2014 | Отправлено: 20:46 26-07-2015
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Russian_Admin

Цитата:
Так оно у меня уже вот в таком формате 26.07.2015 сохраняет в базу, только разделитель точка.

еще раз повторяю, это не такой же формат.  
вы не сможете в вашем виде сортировать даты. сохраняйте в виде YYYY-MM-DD либо в текстовый столбец, либо в DATE (тогда будет больше возможностей с действиями над датами).

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 20:53 26-07-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Выборка по дате в базе


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru