MYSQL выборка записей, которые не обновлялись сутки

Тема в разделе "PHP", создана пользователем Raccoon, 14 ноя 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    172
    Симпатии:
    9
    Добрый день!
    Подскажите как средствами MYSQL выбрать записи за вчерашний день, есть ячейка у каждой записи в формате datetime.
    Спасибо.
     
  2. studentpm

    studentpm

    Регистр.:
    8 ноя 2006
    Сообщения:
    184
    Симпатии:
    132
  3. System777

    System777 Создатель

    Регистр.:
    20 апр 2008
    Сообщения:
    30
    Симпатии:
    13
    Обычно на практике я решал это следующим образом:

    - у каждой записи есть дата в формате unix timestamp (обычное INT-поле для хранения числа);

    - во время выборки указывал два WHERE условия (через AND) - где поле "date" одновременно < такой-то даты и > другой даты (т.е. начала вчерашнего дня).

    Однако этот способ годится для записей в целом числе (INT - для UNIX TIMESTAMP), насчёт datetime, к сожалению, не могу сказать - так как не работал.

    Но если хорошего решения для datetime не найдётся - как вариант можно изменить/добавить поле для unix timestamp числа, с которым и работать вышеприведенным способом...

    P.S. Хотя ещё возможен вариант получения всех записей из MYSQL в массив, но, как правило, такой способ громоздкий и ресурсоёмкий, потому обычно не используется (впрочем и вопрос стоит именно в обработке средствами MySQL) ;)
     
  4. Raccoon

    Raccoon

    Регистр.:
    31 июл 2007
    Сообщения:
    172
    Симпатии:
    9
    Спасибо, это работает, но я неправильно выразился сначала, надо, чтобы показывались не только записи за вчерашний день, но и за предыдущие.

    Т.е. смысл в том, если запись обновлялась в течение 24 часов, её выбирать не надо. А всё что старше, т.е. вчера, позавчера, месяц назад и т.д. - как раз нужно достать из базы и обновить. Как это сделать?
     
  5. zss

    zss Постоялец

    Регистр.:
    22 июн 2007
    Сообщения:
    55
    Симпатии:
    6
    Мне кажется должно работать простое сравнение на больше-меньше:
    SELECT * FROM `table` WHERE `datetime`<DATE_ADD(NOW(), INTERVAL -1 DAY);
     
Статус темы:
Закрыта.