За последние 24 часа нас посетили 50229 программистов и 1688 роботов. Сейчас ищут 1023 программиста ...

вычислить что прошло 7, 14, 21, 28 дней

Тема в разделе "PHP для новичков", создана пользователем sc2r2bey, 2 май 2009.

  1. sc2r2bey

    sc2r2bey Активный пользователь

    С нами с:
    25 апр 2009
    Сообщения:
    76
    Симпатии:
    0
    есть в БД поле дата, каким образом можно вычислить что прошло 7, 14, 21, 28 дней относительно текущей даты с учетом перехода годов, для последующей выборки или удалении?
     
  2. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    [sql]SELECT * FROM records WHERE UNIX_TIMESTAMP(CURDATE())-UNIX_TIMESTAMP(date) > 0 AND (UNIX_TIMESTAMP(CURDATE())-UNIX_TIMESTAMP(date))%604800 = 0;[/sql]

    604800 = 60*60*24*7 - количество секунд в неделе.

    Если хранить дату не в формате даты, а в формате UNIX_TIMESTAMP и передавать в запрос текущий TIMESTAMP, то запрос будет проще:
    PHP:
    1. <?php
    2. $currentTime = time();
    3. $db->query("SELECT * FROM records WHERE $currentTime - `date` > 0 AND ($currentTime - `date`)%604800 = 0");
    4.  
     
  3. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    [sql]SELECT * FROM records WHERE date < (NOW() - INTERVAL 7 DAY)[/sql]
     
  4. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Sergey89
    Классная штука, не знал…
     
  5. Alost

    Alost Активный пользователь

    С нами с:
    7 фев 2009
    Сообщения:
    335
    Симпатии:
    0
    Адрес:
    Город вокруг невы
    И быстрей работает