Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Синтаксис запроса mysql
 
 автор: Eser   (07.11.2010 в 18:43)   письмо автору
 
 

Люди подскажите пожалуйста синтаксис запроса.
Мне нужно что в запросе было (сегодняшняя дата-дата в столбце)>3, т.е нужно искать записи старше 3х дней. Делал в цикле на php но понимаю что это не правильно дабы тормозит сильно когда записей скажем 10000 тыс.
$current_date="2010-11-06"; //Сегодняшнюю дату нахожу с помощью php

$query=mysql_query("select status from table where ($current_date-date_to_isp)>3");
Но этот запрос не работает.

  Ответить  
 
 автор: Trianon   (07.11.2010 в 18:48)   письмо автору
 
   для: Eser   (07.11.2010 в 18:43)
 

mysql плохо вычитает моменты времени.
Ему проще добавлять к моменту интервал.
Соответственно проще будет неравенство A - B > 3 переписать в виде B > A + 3
заодно и правое выражение можно упростить.

  Ответить  
 
 автор: Eser   (07.11.2010 в 23:33)   письмо автору
 
   для: Trianon   (07.11.2010 в 18:48)
 

Делаю вот так:
$query=mysql_query("select status from table where (date_to_isp)>($current_date+3);
Но условие не срабатывает выводит все записи.
Я так понимаю что не работает вот эта часть:
($current_date+3), не понятно как? Ведь получается например (2010-11-06+3)?
Если сделать так select (2010-11-06+3) результат будет 1996

  Ответить  
 
 автор: Trianon   (07.11.2010 в 23:39)   письмо автору
 
   для: Eser   (07.11.2010 в 23:33)
 

Вы не указали что три - это интервал времени, и что интервал этот в сутках.
Плюс к тому, дату как и строку надо в апострофы брать.
чтобы получилось ('2010-11-06' + INTERVAL 3 DAY)

  Ответить  
 
 автор: Eser   (08.11.2010 в 00:09)   письмо автору
 
   для: Trianon   (07.11.2010 в 23:39)
 

select status from table where ('date_to_isp')>('2010-11-06'+ INTERVAL 3 DAY);
Сообщает о синтаксической ошибке рядом c WHERE.
Этот блок нормально работает select ('2010-11-06'+ INTERVAL 3 DAY)

  Ответить  
 
 автор: Trianon   (08.11.2010 в 00:13)   письмо автору
 
   для: Eser   (08.11.2010 в 00:09)
 

date_to_isp зачем в кавычки взяли?
Это не строка и не дата. Это имя поля.
Если уж и брать - то в обратные косые, но никак не в апострофы.

  Ответить  
 
 автор: Eser   (08.11.2010 в 00:15)   письмо автору
 
   для: Trianon   (08.11.2010 в 00:13)
 

Спасибо все заработало!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования