Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выбор из БД диапозон дат 
V
    Опции темы
Самозванка
Дата 6.9.2007, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Есть 2 текстовых поля в котороые из календаря выбираются даты... то есть диапозон...с ... до ... . Формат дат yyyy-mm-dd. Также есть база данных, с столбцом дата и с таким же форматом. Задача: выбрать из БД все все строки, в которых Дата входит в этот диапазон.

Пыталась сделать так, понадеясь, что вдруг язык Php всё сам распознает:
Код

//Дата
if ($tip1=="date") 
{
for ($i=0, $size=odbc_num_rows($result1); $i<$size; $i++)
{
$f=odbc_fetch_array($result1);
$qt = $f['qtyonstock'];
$qty = substr($qt, 0, strpos($qt,".")+3);
$date = $f['datepart'];
$nd = substr($date, 0, strpos($date, " "));
if (($nd >= $date3) && ($nd<=$date4)) 
{
echo "<tr>";
$pr = $f['price'];
$pric = substr($pr, 0, strpos($pr,".")+3);
echo "<td>",$f['stockname'],"</td><td>",$f['goodname'],"</td><td>",$f['model'],"</td><td>",$nd,"</td><td>",$f['measureqty'],"</td><td>",$qty,"</td><td>",$pric,"</td>";
echo "</tr>";

else 
{
continue;
}
}
echo "</table>";
}


Но увы...
Есть ли какие нить стандартные функции для работы с датами, подходящие для этой задачи?
PM MAIL ICQ   Вверх
BuShaRt
Дата 6.9.2007, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Самозванка
в MySQL тип поля с датой какой вообще?
PM MAIL   Вверх
Самозванка
Дата 6.9.2007, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



BuShaRt, ИСпользуется Sybase  и к сожалению я не могу даже посмотреть его формат ( Но по умолчанию он выводит дату и время, потом я преобразую поле тока для даты)
PM MAIL ICQ   Вверх
BuShaRt
Дата 6.9.2007, 11:04 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Самозванка
Желательно делать это на уровне базы. Переходите на MySQL.
PM MAIL   Вверх
Самозванка
Дата 6.9.2007, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



BuShaRt, С радостью, но у нас бух прога на sybase работает. пока никак... а нельзя просто производить манипуляции с 3 полями формата yyyy-mm-dd. Выход же должен быть какой то...
PM MAIL ICQ   Вверх
BuShaRt
Дата 6.9.2007, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Самозванка
Регулярными выражениями.
PM MAIL   Вверх
Glip
Дата 6.9.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 7
Всего: 18



http://manuals.sybase.com/onlinebooks/grou...ery=date+time#X

http://manuals.sybase.com/onlinebooks/grou...Query=between#X

sybase достаточно мощная СУБД, и все необходимое там можно найти smile


--------------------
user posted image
PM MAIL   Вверх
Самозванка
Дата 6.9.2007, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Спасибо конечно, но проблема то не в этом, проблема в вычислении диапозона дат и как работать с датами, когда я их уже получила в виде строки.
PM MAIL ICQ   Вверх
BuShaRt
Дата 6.9.2007, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Самозванка
Вы, если бы вас попросили собрать хвороста для костра, так же бы собрали сначала все, что плохо лежит, а потом бы, уже притащив на место, начали выбирать из этой кучи хворост?

Так и тут, лучше выбрать все что нужно, чем вытащить все и потом уже разбиратсья, "а что же нам было нужно?.

Если все же есть дикое желание делать все задом наперед, то ответ я уже дал "регулярные выражения".

Это сообщение отредактировал(а) BuShaRt - 6.9.2007, 13:19
PM MAIL   Вверх
Glip
Дата 6.9.2007, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 7
Всего: 18



Цитата(Самозванка @  6.9.2007,  10:46 Найти цитируемый пост)
Задача: выбрать из БД все все строки, в которых Дата входит в этот диапазон.

Код

select * from need_table where date_field between start_date and stop_date

или правильно формулируйте вопрос


--------------------
user posted image
PM MAIL   Вверх
console
Дата 6.9.2007, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 307
Регистрация: 12.2.2007
Где: Belarus::Minsk

Репутация: 2
Всего: 3



Возможно ошибаюсь:
Код

mysql_query("SELECT * FROM sometable WHERE datefield>='pervaya_data' and datefield<='vtoraya_data'");

По сути и есть диапазон от первой даты (включая) до второй даты (включая).


--------------------
user posted image
Nothing is impossible
My WeBlog
PM MAIL WWW ICQ   Вверх
Glip
Дата 6.9.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 473
Регистрация: 30.12.2006

Репутация: 7
Всего: 18



Цитата(console @  6.9.2007,  13:35 Найти цитируемый пост)
Возможно ошибаюсь:

возможно, а именно в mysql_query smile

Добавлено через 2 минуты и 56 секунд
Самозванка,  читайте документацию на  Transact-SQL


--------------------
user posted image
PM MAIL   Вверх
Самозванка
Дата 6.9.2007, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Сделала так: 
Код

//Дата
if ($tip1=="date") 
{
$date31=$date3. "00:00:00.000000";
$date41=$date4. "00:00:00.000000";
$resultsel1=  odbc_exec( $conn, "select * from ipr_birja where datepart between '$date31' and  '$date41' ");
for ($i=0, $size=odbc_num_rows($resultsel1); $i<$size; $i++)
{
$f=odbc_fetch_array($result1);
$qt = $f['qtyonstock'];
$qty = substr($qt, 0, strpos($qt,".")+3);
$date = $f['datepart'];
$nd = substr($date, 0, strpos($date, " "));
echo "<tr>";
$pr = $f['price'];
$pric = substr($pr, 0, strpos($pr,".")+3);
echo "<td>",$f['stockname'],"</td><td>",$f['goodname'],"</td><td>",$f['model'],"</td><td>",$nd,"</td><td>",$f['measureqty'],"</td><td>",$qty,"</td><td>",$pric,"</td>";
echo "</tr>";
}
echo "</table>";
}


но не работает и ошибок не пишет

Это сообщение отредактировал(а) Самозванка - 6.9.2007, 15:42
PM MAIL ICQ   Вверх
sTa1kEr
Дата 6.9.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


9/10 программиста
***


Профиль
Группа: Завсегдатай
Сообщений: 1553
Регистрация: 21.2.2007

Репутация: 56
Всего: 146



Самозванка, в PHP есть функция для парсинга строки в метку времени strtotime()
Код

$date = strtotime($f['datepart']);
if ($date > mktime(0, 0, 0, 1, 1, 2007) && $date < mktime())
{
   // ...
}

Но я так же согласен, что и быстрее, и грамотнее делать это в запросе.
PM MAIL   Вверх
Самозванка
Дата 6.9.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Девушка в стиле IT
**


Профиль
Группа: Завсегдатай
Сообщений: 484
Регистрация: 5.9.2006
Где: USA

Репутация: нет
Всего: 40



Правильно ли так писать запрос:
Код

$resultsel1=  odbc_exec( $conn, "select * from ipr_birja where datepart between '$date31' and  '$date41' ");

PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0560 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.