| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Выбор из БД диапозон дат |
| Автор: Самозванка 6.9.2007, 10:46 | ||
| Есть 2 текстовых поля в котороые из календаря выбираются даты... то есть диапозон...с ... до ... . Формат дат yyyy-mm-dd. Также есть база данных, с столбцом дата и с таким же форматом. Задача: выбрать из БД все все строки, в которых Дата входит в этот диапазон. Пыталась сделать так, понадеясь, что вдруг язык Php всё сам распознает:
Но увы... Есть ли какие нить стандартные функции для работы с датами, подходящие для этой задачи? |
| Автор: BuShaRt 6.9.2007, 10:48 |
| Самозванка, в MySQL тип поля с датой какой вообще? |
| Автор: Самозванка 6.9.2007, 10:52 |
| BuShaRt, ИСпользуется Sybase и к сожалению я не могу даже посмотреть его формат ( Но по умолчанию он выводит дату и время, потом я преобразую поле тока для даты) |
| Автор: BuShaRt 6.9.2007, 11:04 |
| Самозванка, Желательно делать это на уровне базы. Переходите на MySQL. |
| Автор: Самозванка 6.9.2007, 11:06 |
| BuShaRt, С радостью, но у нас бух прога на sybase работает. пока никак... а нельзя просто производить манипуляции с 3 полями формата yyyy-mm-dd. Выход же должен быть какой то... |
| Автор: BuShaRt 6.9.2007, 11:18 |
| Самозванка, Регулярными выражениями. |
| Автор: Glip 6.9.2007, 12:41 |
| http://manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@Generic__BookTextView/34010;lang=ru?DwebQuery=date+time#X http://manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@Generic__BookTextView/6434;lang=ru?DwebQuery=between#X sybase достаточно мощная СУБД, и все необходимое там можно найти |
| Автор: Самозванка 6.9.2007, 13:03 |
| Спасибо конечно, но проблема то не в этом, проблема в вычислении диапозона дат и как работать с датами, когда я их уже получила в виде строки. |
| Автор: BuShaRt 6.9.2007, 13:18 |
| Самозванка, Вы, если бы вас попросили собрать хвороста для костра, так же бы собрали сначала все, что плохо лежит, а потом бы, уже притащив на место, начали выбирать из этой кучи хворост? Так и тут, лучше выбрать все что нужно, чем вытащить все и потом уже разбиратсья, "а что же нам было нужно?. Если все же есть дикое желание делать все задом наперед, то ответ я уже дал "регулярные выражения". |
| Автор: console 6.9.2007, 13:35 | ||
Возможно ошибаюсь:
По сути и есть диапазон от первой даты (включая) до второй даты (включая). |
| Автор: Glip 6.9.2007, 13:55 |
возможно, а именно в mysql_query Добавлено через 2 минуты и 56 секунд Самозванка, читайте документацию на http://manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@Generic__BookTocView |
| Автор: Самозванка 6.9.2007, 15:32 | ||
Сделала так:
но не работает и ошибок не пишет |
| Автор: sTa1kEr 6.9.2007, 15:34 | ||
Самозванка, в PHP есть функция для парсинга строки в метку времени http://ru2.php.net/manual/ru/function.strtotime.php
Но я так же согласен, что и быстрее, и грамотнее делать это в запросе. |
| Автор: Самозванка 6.9.2007, 15:46 | ||
Правильно ли так писать запрос:
|
| Автор: console 6.9.2007, 15:54 |
| грамотнее ключевые слова запроса писать с БОЛЬШИХ БУКВ |
| Автор: Самозванка 6.9.2007, 15:54 |
| console, хорошо. спасибо большое. запрос работает... проблема в чем то другом |
| Автор: Glip 6.9.2007, 16:43 |
| а ничего что у вас название поля совпадает с названием функции в sybase "datepart" ? и кажется мне, что добавлять время ."00:00:00.000000" не обязательно, запрос должен работать и без этого. |
| Автор: Самозванка 7.9.2007, 10:00 | ||||
| Glip, у меня нет такой функции. И когда вывожу просто результат, не в таблице, всё работает:
А так нет:
|
| Автор: Glip 7.9.2007, 10:09 |
| ну тогда по шагам: смотрим что возвращает odbc_fetch_array($resultsel1) и далее по коду print_r и var_dump в руки может быть имеет смысл заменить for на while |
| Автор: Самозванка 7.9.2007, 10:15 |
| Glip, да, написав этот вопрос, я так и стала делать, в итоге получилось... что $g=odbc_num_rows($resultsel1); возвращает отрицательное число. Вспомнила, что у SYBASE, когда запрос SELECT сложный эта функция не работает. как можно выйти из такой ситуации? |
| Автор: Glip 7.9.2007, 10:37 | ||
ну вот как раз while может пригодиться
тем более что исмользование $i в теле цикла я не заметил. Добавлено через 1 минуту и 3 секунды а что мешает использовать непосредственно функции работы с sybase вместо odbc ? |
| Автор: Самозванка 7.9.2007, 10:43 |
| Glip, спасибо. Супер! всё кк. А с функциями Sybase я в самом начале работы отказалась, сейчас уже не вспомню, но там с какими то проблемами столкнулась. |