О проектеГостеваяКарта сайта

Предложишь лучшее решение - получишь 100 рублей!

Выбрать из БД MySQL записи за определенный период времени

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

Решение

Поле date имеет формат DATETIME:
 
Выбрать все записи за сегодня (сутки):
SQL
SELECT * FROM TABLE WHERE date >= CURDATE()

За вчерашний день:
SQL
SELECT * FROM TABLE WHERE date >= (CURDATE()-1) AND date < CURDATE()

За неделю:
SQL
SELECT * FROM TABLE WHERE date >= DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY)

За месяц:
SQL
SELECT * FROM TABLE WHERE date >= DATE_SUB(CURRENT_DATE, INTERVAL 1 MONTH)

Если метка времени time хранится в UNIXTIME, выбрать можно так:
 
За сутки:
SQL
SELECT COUNT(*) FROM `table` WHERE `time`>NOW()-INTERVAL 24 HOUR

За двое суток:
SQL
SELECT COUNT(*) FROM `table` WHERE `time`>NOW()-INTERVAL 48 HOUR

За прошлые сутки:
SQL
SELECT COUNT(*) FROM `table` WHERE `time` BETWEEN (NOW()-INTERVAL 48 HOUR) AND (NOW() - INTERVAL 24 HOUR)

либо можно "обернуть" в UNIX_TIMESTAMP
 
SQL
UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY))

Источник: http://snipcode.ru Автор: snipcode.ru


Рейтинг:

Теги: MySQL SELECT время

Если вы знаете более оригинальное, красивое, ЛУЧШЕЕ решение этой задачи, у вас есть шанс заработать 100 рублей!!! Если ваше решение будет признано лучшим, деньги ваши! Мы гарантируем выплату!

Всего 1 комментарий

< !-- @form -- >

Подписаться на новые комментарии?

%form_captcha%

*Обзазательны для заполнения

PHP

 

Последние комментарии
  • phpguru

    Функция отличная только надо бы добавить для utf8 кодировку обработать строку, а то не все понимают как сделать подобное!
    $str = iconv_strlen($str,'UTF-8');
    Я так считаю!
    13-12-2013 в 12:59:38 ID# 454 посмотреть...


  • SnipCode.ru

    Возможно Вы правы, непонятно только зачем тут iconv_strlen (((
    13-12-2013 в 13:02:55 ID# 455 посмотреть...


  • Сергей

    поторопился, так надо в конце, пардон.
        return $v['pass'];
        }
    return FALSE;
    }

    02-12-2013 в 23:33:41 ID# 377 посмотреть...


  • Сергей

    Думаю все же логичней использовать foreach, т.к. можно промахнуться с ключами, а если массив ассоциативный (я раньше делал ключ = дата и время регистрации), то вообще работать не будет.
     
    function search($array,$login)
    {
       foreach ($array as $k=>$v)
        if($v['login'] == $login){
        return $v['pass'];
        }
    }
    return FALSE;
    Так, на минутку.
    Время исполнения смысла не имеет, авторизация используется 1 раз, если юзер не параноик)))

    02-12-2013 в 23:33:41 ID# 376 посмотреть...


  • Пабло

    Как сделана ваша система рейтинга,с учетом количеством людей,проголосовавших?
    11-11-2013 в 17:04:39 ID# 207 посмотреть...


  • SnipCode.ru

    ну...вобщем то все просто: берем общую оценку, делим на кол-во проголосовавших, получаем рейтинг
    11-11-2013 в 17:07:06 ID# 208 посмотреть...


  • Пабло

    Да,просто у меня возникли проблемы,при сохранении данных,в бд и отображение количество проголосовавших людей,у вас где нибудь на сайте описано как это сделано или будет?
     
    Мне нужна система рейтинга точно такая же как у вас=)
    11-11-2013 в 17:10:56 ID# 209 посмотреть...


  • KorniloFF

    Приведенный код обрезает до первой точки в строке, в случае, если в ней будет их несколько, что не соответствует теме.
    Вот код, обрезающий до последней точки:

    PHP

    $title= preg_replace("/([\s\S.]+)\.\w+$/","$1",$str)
     

    10-11-2013 в 10:45:29 ID# 205 посмотреть...


  • Виктор

    Все отлично работает! Извините , у меня есть задача отрезать после второй и до второй запятой , что нужно поправить в первом примере?
    Спасибо!
    30-09-2013 в 20:34:07 ID# 204 посмотреть...