Условие в SELECT по дате создания строчки

leealex

Новичок
Условие в SELECT по дате создания строчки

Есть вот такой скрипт выводящий количество строк из определенной таблицы:

PHP:
<?php connect();
 $query = "SELECT COUNT(*) as images_num FROM `domains`";
 $result = mysql_query($query);
 $galleryCounter = mysql_fetch_assoc($result);
 disconnect();

  if (isset($galleryCounter['images_num'])) {
      echo $galleryCounter['images_num'];
 } else {
      echo 0; 
}

function connect() {
      $dbHostName = "localhost";
       $dbUserName = "---";
      $dbPassword = "---";
      $dbName = "---";

      $connect = mysql_connect($dbHostName, $dbUserName, $dbPassword);
      $result = false;

            if ($connect) {
           $result = mysql_select_db($dbName);
                     }

            return $result;
 }

function disconnect() {
      mysql_close();
 } 
?>
выводится общее количество записей в таблице "domains"

Вопрос: как сделать вывод количества записей за определенный промежуток времени? например за текущий месяц или за последние 6 месяцев или за год?
 

leealex

Новичок
я знаю что нужно добавить where, я не знаю как правильно условие задать. date или что там? я начинающий и для меня элементарное не так элементарно как для вас =))))

что-то типа того?
PHP:
SELECT COUNT(*) as images_num FROM `domains` WHERE date=current_month
 

Фанат

oncle terrible
Команда форума
никто не знает, какое поле у тебя в таблице содержит дату.
поэтому никто не знает, "что там" писать
 

leealex

Новичок
извиняюсь за то что сразу не указал, дата выводится в столбце "created" и для каждой записи ячейка имеет вид "2008-10-31 08:57:18"
 

Фанат

oncle terrible
Команда форума
давай упростим задачу.
пусть будет там не дата, а цена.
ты можешь написать условие, по которому будут выведены все строки, у которыйх цена больше 10 рублей?
 

leealex

Новичок
так?

PHP:
SELECT COUNT(*) as images_num FROM `domains` WHERE price>10
или я не так понял?
 

Beavis

Banned
так..
а теперь попробуй написать условие где цена больше 10, но меньше 20 рублей
 

leealex

Новичок
издеваешься? при чем тут рубли? если бы я знал как правильно составлять условия разве я бы спрашивал? как задать условие по дате?

-~{}~ 16.05.09 22:14:

может быть типа того?

PHP:
SELECT COUNT(*) as images_num FROM `domains` WHERE created>DATE_ADD
 

Beavis

Banned
leealex
если б ты щас дурака не включил, то уже через одно сообщение сам бы допёр как написать то что тебе нужно...

а так иди читай мануалы...
 

leealex

Новичок
какого дурака? я не знаю как составить условие в котором "цена больше 10, но меньше 20 рублей"
неужели трудно помочь?

-~{}~ 16.05.09 22:25:

просто скажи какую переменную подставить в WHERE соответствующую текущему месяцу
 

Фанат

oncle terrible
Команда форума
переменную вставлять не надо. надо вставлять значение. точно так же, как с суммой.

-~{}~ 16.05.09 19:45:

как задать условие по дате?
так же, как и по цене.
поэтому тебе совершенно резонно предложили составить запрос с ценой.
 

leealex

Новичок
но я не знаю как составить запрос с ценой, при условии больше 10 понятно - price>10 а при 2х условиях я не знаю как составить :(

price>10 AND price<20 ?
 

Фанат

oncle terrible
Команда форума
правильно
я и предложил для примера поработать с ценой, потому что с цифрами проще.

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

leealex

Новичок
ок, а какие значения подставлять в дату? каждый месяц значение ведь будет меняться, не пойму как это применить к дате.

created>2009-05-01 AND created<2009-05-31 так чтоли?

-~{}~ 16.05.09 23:24:

вот так ноль выдает :(

SELECT COUNT(*) as items FROM domains created>2009-05-01 AND created<2009-05-31
 

Фанат

oncle terrible
Команда форума
каждый месяц значение ведь будет меняться
какая разница. ты же можешь вычислить в пхп текущую дату?
а первое число у тебя в месяц не входит, что ли?
вот так ноль выдает
ну разумеется, будет выдавать ноль. зачем ты сравниваешь дату с числом 2003, которое получается из выражения 2009-05-01?
дата - это строка, а строки пишутся в запросе в кавычках
 

leealex

Новичок
О! похоже получилось :))

SELECT COUNT(*) as items FROM domains WHERE created>'2009-05-00' AND created<'2009-05-31'

выдал мне верное значение - 3 супер! спасибо :)

сделал вот так:

$dt=date('Y-m');
$query = "SELECT COUNT(*) as items FROM domains WHERE created>'$dt' AND created<'2009-05-31'";

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

created>'$dt'-1
 

leealex

Новичок
ничего не получилось :)))

-~{}~ 17.05.09 00:25:

в мануале к date вот такой пример приведен формирования прошедшего месяца:

$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));

не работает, что-то не так делаю


$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$query = "SELECT COUNT(*) as items FROM domains WHERE created>$lastmonth AND created<'2009-05-31'";
 

Фанат

oncle terrible
Команда форума
не надо рассматривать все эти команды, как волшебные заклинания.
и пихать, не понимая, что делаешь. надо хоть немного думать над своими действиями.
что у тебя содержится в переменной $lastmonth?
 
Сверху