Unix дата вычесть год

Тема в разделе "PHP", создана пользователем jcrush, 11 май 2010.

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

    jcrush

    Регистр.:
    10 ноя 2006
    Сообщения:
    692
    Симпатии:
    55
    Добрый день, мне нужно выводить страницы на текущую дату, но прошлых лет, до чего смог додуматься:
    PHP:
    $nowd=mktime(date('h')-24,date('n'),date('s'),date('m'),date('d'),date('Y')-);
    $nowd2=mktime(date('h'),date('n'),date('s'),date('m'),date('d'),date('Y')-);
    $sql sed_sql_query("SELECT page_id, page_alias, page_cat, page_title, page_date FROM $db_pages WHERE page_date>$nowd and page_date<$nowd2 AND page_cat NOT LIKE 'system' ORDER by page_date DESC LIMIT $l");
    но
    1. даты как то не точно отрабатывают, но примерно....
    2. получается только за 2 года, как бы сделать чтобы года эти были за все время?! т.е. 3-5 лет назад.
     
  2. picasik

    picasik Постоялец

    Регистр.:
    13 ноя 2006
    Сообщения:
    81
    Симпатии:
    21
    можно попробовать так
    "SELECT page_id, page_alias, page_cat, page_title, page_date FROM $db_pages WHERE from_unixtime(page_date,"%m-%d") like '".date("m-d")."' AND page_cat NOT LIKE 'system' ORDER by page_date DESC LIMIT $l"
     
    jcrush нравится это.
  3. jcrush

    jcrush

    Регистр.:
    10 ноя 2006
    Сообщения:
    692
    Симпатии:
    55
    Parse error: syntax error, unexpected '%'
     
  4. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Ну ясен пень, кавычки ведь двойные стоят.
    PHP:
    "SELECT page_id, page_alias, page_cat, page_title, page_date FROM $db_pages WHERE from_unixtime(page_date,'%m-%d') like '".date("m-d")."' AND page_cat NOT LIKE 'system' ORDER by page_date DESC LIMIT $l"
     
    jcrush нравится это.
  5. jcrush

    jcrush

    Регистр.:
    10 ноя 2006
    Сообщения:
    692
    Симпатии:
    55
    Вот то что надо спасибо, а как теперь текущий год убрать?
    Сейчас выдает все года, а нужно только прошлые, но не текущий...
     
  6. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    А при обрабоке результатов не вариант сделать?
    Или надо именно в запросе?
     
  7. Hafner

    Hafner Постоялец

    Регистр.:
    9 июл 2008
    Сообщения:
    79
    Симпатии:
    30
    Получается, только год надо менять?

    PHP:
    // задаем промежуток времени
    $start_year "2005";
    $end_year "2010";
    $now_data date("m-d");

    for(
    $i=$start_year$i<=$end_year$i++) {
         
    $x_data $i."-".$now_data;
         
    $sql sed_sql_query("SELECT page_id, page_alias, page_cat, page_title, page_date FROM $db_pages WHERE FROM_UNIXTIME(page_date, '%Y-%m-%d') = $x_data AND page_cat NOT LIKE 'system' ORDER by page_date DESC LIMIT $l");
    }
    Осталось добавить вывод необходимой информации для каждого прохода цикла.
     
    jcrush нравится это.
  8. jcrush

    jcrush

    Регистр.:
    10 ноя 2006
    Сообщения:
    692
    Симпатии:
    55
    Да думал в запросе проще всего сделать...
    -1 где-нибудь поставить, пока ничего не получилось (
     
  9. picasik

    picasik Постоялец

    Регистр.:
    13 ноя 2006
    Сообщения:
    81
    Симпатии:
    21
    можно так вывести записи за текущую дату, кроме текущего года
    PHP:
    "SELECT page_id, page_alias, page_cat, page_title, page_date FROM $db_pages WHERE FROM_UNIXTIME(page_date, '%m-%d') like '".date('m-d')."' AND FROM_UNIXTIME(page_date, '%Y') < '".date('Y')."' AND page_cat NOT LIKE 'system' ORDER by page_date DESC LIMIT $l"
     
    jcrush нравится это.
  10. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    -1 можно сделать с функцией DATE_SUB(NOW(), INTERVAL 1 YEAR)

    PHP:
    "SELECT page_id, page_alias, page_cat, page_title, page_date 
    FROM 
    $db_pages 
    WHERE 

    FROM_UNIXTIME(page_date)<DATE_SUB(NOW(), INTERVAL 1 YEAR) 
    AND FROM_UNIXTIME(page_date)>DATE_SUB(NOW(), INTERVAL 5 YEAR) 
    AND DATE_FORMAT(FROM_UNIXTIME(page_date), '%m-%d')=DATE_FORMAT(NOW(), '%m-%d')

    AND page_cat NOT LIKE 'system' ORDER by page_date DESC LIMIT 
    $l"
    будет 2006-2009г


    http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
     
    jcrush нравится это.
Статус темы:
Закрыта.