форматирование выборки по дате из datetime с помощью mysql / php (создание простого счетчика статистики)

#php #mysql #formatting

#php #mysql #форматирование

Вопрос:

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

допустим, у нас пока нет пользовательского идентификатора гостя, пользовательского идентификатора хоста, pid хоста. ниже приведен только пример.

   0 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 13:53:20' (length=19)
  1 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 13:54:29' (length=19)
  2 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 13:57:39' (length=19)
  3 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 13:59:10' (length=19)
  4 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 13:59:49' (length=19)
  5 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:00:02' (length=19)
  6 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:00:09' (length=19)
  7 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:01:36' (length=19)
  8 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:01:49' (length=19)
  9 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:03:25' (length=19)
  10 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:05:54' (length=19)
  11 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:06:06' (length=19)
  12 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:06:45' (length=19)
  13 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:07:00' (length=19)
  14 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:07:52' (length=19)
  15 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:09:34' (length=19)
  16 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:09:57' (length=19)
  17 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:10:55' (length=19)
  18 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string '' (length=0)
      'timecreate' => string '2011-05-13 14:11:02' (length=19)
  19 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => string '47' (length=2)
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string 'http://localhost/netcoid' (length=24)
      'timecreate' => string '2011-05-13 15:32:05' (length=19)
  20 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => null
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string 'http://localhost/product?id=47' (length=30)
      'timecreate' => string '2011-05-14 15:32:47' (length=19)
  21 => 
    array
      'guest_UID' => string '0' (length=1)
      'host_UID' => string '24' (length=2)
      'host_PID' => string '22' (length=2)
      'IP' => string '127.0.0.1' (length=9)
      'referrer' => string 'http://localhost/netcoid' (length=24)
      'timecreate' => string '2011-05-14 15:32:50' (length=19)
  

как мы можем превратить это в mysql или с php?

   0 => 
    array
      'totalview' => 19 ( from 0 - 19 array at date 2011-05-13 )
      'timecreate' => string '2011-05-13' (length=19)
      'UNIQview' => 1 ( using mysql distinct(IP) or something )
   1 => 
    array
      'totalview' => 2 ( from 20 - 21 array at date 2011-05-14 )
      'timecreate' => string '2011-05-14' (length=19)
      'UNIQview' => 1 ( using mysql distinct(IP) or something )
  

любые предложения по производительности (допустим, у нас есть 1000 данных. это нормально? )

последний вопрос, как вы просто извлекаете данные за одну неделю?

* редактировать мне удалось получить что-то вроде

     function getPageViews($date_start = '0000-00-00' ,$date_end = '9999-99-99'){
    $data = $this->fetchAll ( "SELECT COUNT(AID) AS views, LEFT(timecreate, 10) AS date FROM analytics WHERE 
    LEFT(timecreate, 10) BETWEEN $date_start and $date_end GROUP BY(LEFT(timecreate, 10))" );
    return $data;
}
  

у меня все еще есть некоторые проблемы с выбором отдельного IP-адреса для просмотра uniqpage..

Большое вам спасибо, что заглянули.

Адам Рамадан

Комментарии:

1. Если я правильно понимаю, чего вы хотите достичь, вот обзор посещений страницы между двумя заданными датами, и данные сгруппированы по дням и IP. Вы пробовали добавлять столбец IP в предложение GROUP BY? GROUP BY LEFT(timecreate, 10), IP

Ответ №1:

 SELECT DATE_FORMAT(timecreate,"%Y-%m-%d") as roundDate, 
              COUNT(1) as totalViews, COUNT(DISTINCT IP) as uniqueIPs
         FROM analytics
         GROUP BY roundDate; 
  

Смотрите MySQL DATE_FORMAT для получения дополнительной информации о форматировании значений даты, в таких случаях действительно нет необходимости использовать строковые манипуляции.