Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

MySQL: выборка записей с timestamp за текущий день. (mus)
Author Message
mus
Участник форума



Joined: 06 Mar 2005
Posts: 130
Карма: -10
   поощрить/наказать


PostPosted: Fri May 13, 2005 11:32 pm (написано за 3 минуты 44 секунды)
   Post subject: Изменения за текущий день
Reply with quote

Как, господа, узнать, сколько фоток за сегодня было добавлено в фотогалерею, если дата добавления фотки в фотогалерее хранится в БД в формате unix. Тоесть:
Заходит чел на сайт, а ему статистика, мол за сегодня в фотогалерее добавлено 7 фотографий. Трудность в определении дня сегодняшнего, каким образом это можно сделать без заведения в БД отдельной таблицы или полей?

Если не понятно, объясню понятнее.
Требуется построить селект-запрос, который бы возвращал мне строки из таблицы фоток, которые были добавлены лишь за день сегодняшний, а не за (24*60*60), сложность состоит в том, что я не могу построить алгоритм нахождения начальной точки сегодняшнего дня, тоесть грубо говоря не знаю, более чего должен быть time()
SELECT * FROM images WHERE date > (начальная точка сегодняшнего дня)
Но без заведения всяких полей и таблиц в БД.
HELP!
Спасибо заранее!
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Sat May 14, 2005 1:16 am (спустя 1 час 44 минуты; написано за 1 минуту 27 секунд)
   Post subject:
Reply with quote

Code (php): скопировать код в буфер обмена
$current_day_start = mktime (www.php.net/mktime)(0, 0, 0, date (www.php.net/date)("m"), date (www.php.net/date)("d"), date (www.php.net/date)("Y"));
$current_day_end = mktime (www.php.net/mktime)(23, 59, 59, date (www.php.net/date)("m"), date (www.php.net/date)("d"), date (www.php.net/date)("Y"));
$query = "SELECT * FROM table WHERE date>$current_day_start AND date<$current_day_end"
Back to top
Иван Неретин
Заглянувший



Joined: 27 Mar 2005
Posts: 18
Карма: 0
   поощрить/наказать

Location: МГУ -> ИНЭОС

PostPosted: Sat May 14, 2005 2:26 am (спустя 1 час 9 минут; написано за 1 минуту 5 секунд)
   Post subject:
Reply with quote

Если угодно взвалить ту же работу на плечи MySQL, то
Code (SQL): скопировать код в буфер обмена
SELECT * FROM TABLE WHERE date>UNIX_TIMESTAMP(CURDATE())
Back to top
View user's profile Send private message
Андрей Анатольич (Venom)
Участник форума



Joined: 02 Sep 2003
Posts: 28
Карма: 4
   поощрить/наказать

Location: Екатеринбург

PostPosted: Tue May 17, 2005 1:15 pm (спустя 3 дня 10 часов 49 минут; написано за 2 минуты 6 секунд)
   Post subject:
Reply with quote

Это правильно, если последние записи в таблице будут за сегодняшний день. Если же вы хотите сделать выборку по какому-то либо конкретному дню, то надо делать так:
Code (SQL): скопировать код в буфер обмена
SELECT * FROM `table` WHERE `date`
Back to top
View user's profile Send private message
Андрей Анатольич (Venom)
Участник форума



Joined: 02 Sep 2003
Posts: 28
Карма: 4
   поощрить/наказать

Location: Екатеринбург

PostPosted: Tue May 17, 2005 1:18 pm (спустя 2 минуты; написано за 1 минуту 9 секунд)
   Post subject:
Reply with quote

Забыл - вот как можно вычислить начало дня:
Code (php): скопировать код в буфер обмена
        function getBeginOfDay($time=null) {
                if ($time == null) $time = time (www.php.net/time)();
                //
                $current = getDate (www.php.net/getdate)($time);
               
                //
                return ($time - (($current['hours']*3600)+($current['minutes']*60)+$current['seconds']));
        }

        echo (www.php.net/echo) getBeginOfDay();
        //
        echo (www.php.net/echo) getBeginOfDay(1034324234);
Back to top
View user's profile Send private message
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Tue May 17, 2005 5:09 pm (спустя 3 часа 51 минуту; написано за 3 минуты 52 секунды)
   Post subject:
Reply with quote

Андрей Анатольич (Venom), это сложно, копайте в ru2.php.net/mktime
Code (php): скопировать код в буфер обмена
$start_of_yesterday = mktime (www.php.net/mktime)(0, 0, 0, date (www.php.net/date)('m'), date (www.php.net/date)('d') - 1);
$start_of_today = mktime (www.php.net/mktime)(0, 0, 0);

// $any - is any value of local date/time
$start_of_any = mktime (www.php.net/mktime)(0, 0, 0date (www.php.net/date)('m', $any), date (www.php.net/date)('d', $any), date (www.php.net/date)('Y', $any));
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML