Авторизация







Регистрация / Забыли пароль?

Регистрация нового пользователя











< Назад

Восстановление пароля





< Назад

Добро пожаловать

Выход


Ежедневное обновление статей и уроков, будь в курсе, держи руку на пульсе событий!

Главная >> PHP

Выборка записей за текущий и прошлый месяц SQL


Зачастую при работе с базами данных, нам требует показать записи за предыдущий отрезок времени, за прошлый месяц или неделю например. О том как это реализовать в MySql, мы рассмотрим ниже.

    И так, чтобы это реализовать, наше поле с датой, должно быть формата datetime. Пример: есть таблица заказов – order в ней есть поле datetime - типа DATETIME, поле - сумма заказа, тип INT. 
 
    И нам нужно узнать количество и сумму заказов за сегодняшний день, за прошлый месяц, и за предыдущий месяц.

    Начнем с выборки объектов за сегодняшний день:

SELECT COUNT(1) FROM `order` WHERE `datetime` >= CURDATE()

    Остановимся подробнее на некоторых моментах. COUNT(1) вернет нам число - количество записей в нашей выборке. 
    Функция CURDATE() - возвращает сегодняшнюю дату. 
    Соответственно, наше условие на русском языке звучит так - " Выбери количество записей в таблице order, которые удовлетворяют условию - их поле datetime больше, чем текущая дата". Сравнение в пределах типа DATETIME абсолютно корректно с точки зрения MySQL.

    Количество заказов за текущий месяц

SELECT COUNT(1) FROM `order` WHERE 
MONTH(`datetime`) = MONTH(NOW()) 
AND YEAR(`datetime`) = YEAR(NOW())

    Немного усложним наш SQL запрос. 

  • функция MONTH() возвращает номер месяца;
  • функция YEAR() возвращает год;
  • функция NOW() возвращает текущие дату и время. 

    Соответственно, в данном SQL запросе мы сравниваем, равен ли текущий месяц MONTH(NOW()) месяцу заказа И равен ли текущий год году, в котором был сделан заказ. SQL запрос для подсчета общей суммы заказов практически идентичен и выглядит так:

SELECT SUM(`total_price`) FROM `order` WHERE 
MONTH(`datetime`) = MONTH(NOW())
AND YEAR(`datetime`) = YEAR(NOW())

    функция SUM() выполнит суммирование поля total_price (общая сумма заказа) всех записей за текущий месяц и вернет единственное число - общая сумма заказов за текущий месяц.

    Несмотря на то, что запрос выше полностью удовлетворяет нашей задаче, он не оптимален.
    Оптимальный SQL запрос в данном случае будет выглядеть так:

SELECT COUNT(1) FROM `order` WHERE 
`datetime` > LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH
 AND `datetime` < DATE_ADD(LAST_DAY(CURDATE()), INTERVAL 1 DAY) 

    Функция LAST_DAY() возвращает дату, смещенную на последний день месяца.
    Соответственно, конструкция LAST_DAY(CURDATE()) + INTERVAL 1 DAY - INTERVAL 1 MONTH вернет нам первый день текущего месяца.
    В итоге, наше условие сводится к виду "вернуть все записи, в которых дата больше, чем первый день текущего месяца, но меньше, чем первый день следующего месяца".

    Количество заказов за предыдущий месяц

SELECT COUNT(1) FROM `order` WHERE 
`datetime` > LAST_DAY( DATE_SUB( CURDATE( ) , INTERVAL 2 MONTH ) ) + INTERVAL 1 DAY 
AND  `datetime` < DATE_ADD( LAST_DAY( CURDATE( ) - INTERVAL 1 MONTH ) , INTERVAL 1 DAY )

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

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

    P.S. Сегодня мы научились извлекать из базы данных MySql записи за сегодняшний день, текущий и прошлый месяц.

    Материал взят из http://hedint.ru. И представлен исключительно в ознакомительных целях.


Дата публикации: 04.02.2013
Опубликовал: Сергей Кашурин
Просмотров: 3578
Правила перепечатки

Правила перепечатки

Уважаемый посетитель сайта!
Ниже преведены условия использования и перепечатки материалов сайта /
Все материалы данного сайта подготовлены для Вас лично мной.

Большая часть материалов сайта - это авторские уроки, остальные, это переводы уроков с английского языка на русский.
Если Вы решили использовать материалы данного сайта где-то на своих ресурсах или в рассылке, то соблюдайте следующие требования:
1. Урок или статья должны перепечатываться «как есть» с сохранением всех ссылок на источник урока, а если это перевод, то и на сайт, авторы которого подготовили его.
2. Ссылки на сайт источника и переводчика обязательно должны быть работоспособными (при нажатии по ссылке человек должен перейти на сайт автора/переводчика). Если Вы перепечатали какой-либо документ, обязательно проверьте ссылку на работоспособность.
3. Искажение информации об авторе, источнике, переводчике при перепечатке материалов запрещено!
4. Содержание урока или статьи при перепечатке не должно подвергаться модификациям и переделке. Все уроки и статьи, размещенные на сайте, должны перепечатываться как есть. Вы не имеете права урезать, исправлять или иным образом коверкать републикуемый документ.
С уважением, Сергей Кашурин– владелец сайта /


5 прекраснейших дизайнерских решений для ваших форм входа
Уважаемые друзья, в этом уроке, собраны 5 красивейших форм регистрации/авторизации, с пошаговым объяснением, и с возможность бесплатно скачать. Вы всё ещё думаете читать или нет? А кто-то уже вовсю пользуется ими!
110 бесплатных PSD элементов, для ваших слайдеров, лент, выпадающих меню навигации и аудио видео проигрывателей
Используйте бесплатно распространяемую графику, вместо того, чтобы тратить ваше драгоценное время, особенно, когда дело доходит до веб дизайна. Ведь его вы можете потратить на более нужные вещи, такие как проявление творчества. Чтобы сделать из вашего проекта конфетку, ниже приведены 110 бесплатных PSD элементов для создания слайдеров, лент, выпадающих меню навигации и аудио видео проигрывателей, полученных нами с различных веб-сайтов и отдельных лиц, которые вносят вклад в графику для дизайнеров, абсолютно бесплатно.
Colorizer: пользователь сам выберет цвет продукта на вашем сайте
Когда вы выбираете машину, или футболку в интернет магазине, хотелось бы вам самим выбрать для неё цвет? Думаю да. В этой статье, я расскажу вам про плагин Colorizer, с помощью которого, для наших дорогих пользователей, мы сможем предоставить возможность выбора цвета продукта в котором он заинтересован, что оставит о нас приятное впечатление и заявку на покупку. jQuery плагин Colorizer - изменим цвет к лучшему.
работа с материалами - смотрите информацию здесь
Когда вы выбираете машину, или футболку в интернет магазине, хотелось бы вам самим выбрать для неё цвет? Думаю да. В этой статье, я расскажу вам про плагин Colorizer, с помощью которого, для наших дорогих пользователей, мы сможем предоставить возможность выбора цвета продукта в котором он заинтересован, что оставит о нас приятное впечатление и заявку на покупку. jQuery плагин Colorizer - изменим цвет к лучшему.
Сделать работу на заказ там
Когда вы выбираете машину, или футболку в интернет магазине, хотелось бы вам самим выбрать для неё цвет? Думаю да. В этой статье, я расскажу вам про плагин Colorizer, с помощью которого, для наших дорогих пользователей, мы сможем предоставить возможность выбора цвета продукта в котором он заинтересован, что оставит о нас приятное впечатление и заявку на покупку. jQuery плагин Colorizer - изменим цвет к лучшему.
учебники английского здесь - вся детальная информация на сайте
Когда вы выбираете машину, или футболку в интернет магазине, хотелось бы вам самим выбрать для неё цвет? Думаю да. В этой статье, я расскажу вам про плагин Colorizer, с помощью которого, для наших дорогих пользователей, мы сможем предоставить возможность выбора цвета продукта в котором он заинтересован, что оставит о нас приятное впечатление и заявку на покупку. jQuery плагин Colorizer - изменим цвет к лучшему.
Костюм сварщика комбинированный со спилком М2. Костюм сварщика спилковый .
Когда вы выбираете машину, или футболку в интернет магазине, хотелось бы вам самим выбрать для неё цвет? Думаю да. В этой статье, я расскажу вам про плагин Colorizer, с помощью которого, для наших дорогих пользователей, мы сможем предоставить возможность выбора цвета продукта в котором он заинтересован, что оставит о нас приятное впечатление и заявку на покупку. jQuery плагин Colorizer - изменим цвет к лучшему.
Как узнать что ты беремен здесь
Когда вы выбираете машину, или футболку в интернет магазине, хотелось бы вам самим выбрать для неё цвет? Думаю да. В этой статье, я расскажу вам про плагин Colorizer, с помощью которого, для наших дорогих пользователей, мы сможем предоставить возможность выбора цвета продукта в котором он заинтересован, что оставит о нас приятное впечатление и заявку на покупку. jQuery плагин Colorizer - изменим цвет к лучшему.

Уроки и статьи

«Найден Самый Дешевый и Эффективный Способ Рекламы в Интернете!»

Доказанo: ведение своей почтовой рассылки - это самый действенный и дешевый метод рекламы в Интернете.

Используете ли Вы его?

Если нет, то Вы давно теряете свои деньги! Если да, то пришло время вести Вашу почтовую рассылку на самом эффективном инструменте в Рунете - сервисе рассылок SmartResponder.ru

Узнать об этом подробнее >>

Быть в курсе всех событий: