Выбрать данные с начала месяца по текущий день

Тема в разделе "Базы данных", создана пользователем verfaa, 30 июл 2013.

Модераторы: latteo
  1. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    375
    Симпатии:
    41
    Мне нужно выбрать данные с первого числа текущего месяца по текущий день.
    Например, с 1 июля и по 30 июля ( сегодня 30-е).

    Рабочая функция для выбора данных, например, за последние 24 часа у меня выглядит так:

    Код:
    SELECT count(DISTINCT id_vis) FROM visit_tbl
                                      LEFT JOIN users_tbl ON id=id_vis
                                      WHERE id_vis!='".intval($userid)."' AND id_user='".intval($userid)."' AND (visit_date + INTERVAL 1 DAY)>NOW()
    Помогите переделать этот запрос для выбора данных с начала месяца по текущий день.
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.450
    Симпатии:
    1.243
    Код:
    visit_date > DATE(NOW()) - INTERVAL DAY(NOW()) - 1 day
    От сегодня отнимаем порядковый номер дня - 1 день (чтобы остатся в пределах месяца)
    поскольку время не указано, то по умолчанию 00:00:00
    Ну и чисто для тестов:
    Код:
    SELECT DATE(NOW()) - INTERVAL DAY(NOW()) - 1 day
     
    verfaa нравится это.
  3. verfaa

    verfaa

    Регистр.:
    29 янв 2007
    Сообщения:
    375
    Симпатии:
    41
    На гугл-ответах предложили ещё интересный вариант, буду его использовать
    Код:
    extract(year_month from visit_date)=extract(year_month from current_date)
    И ещё вопрос, как переделать этот запрос для выбора данных с начала дня по текущее время?
     
    latteo нравится это.
  4. esche

    esche

    Регистр.:
    9 авг 2009
    Сообщения:
    360
    Симпатии:
    243

    Код:
    extract(year_month from visit_date)=extract(year_month from current_date)
    AND  extract(DAY from visit_date)= extract(DAY from current_date)  
    * тут не совсем верно, т.к. учитывается только текущий день.. не по текущее время. Если визитов "из будущего" не намечается - вполне приемлемо. Если же принципиально -можно добавить ещё один AND сравнение с текущим моментом времени (UNIX_TIMESTAMP())