Вывести данные за 3 последних дня

Статус
В этой теме нельзя размещать новые ответы.

andrewa

Участник
Регистрация
11 Янв 2008
Сообщения
167
Реакции
7
как вывести с базы MySQL записи именно за 3 последних дня?

за вчера знаю как:
PHP:
$yesterday = date('Y-m-d', mktime(date('H'), date('i'), date('s'), date('m'), date('d') - 1, date('Y')));

каков будет код для вывода именно за три последних дня?
 
Исходя из date('d') - 1
пробуй date('d') - 3
UPD: но так не работает
Правильный код(доработанный из поста ниже:(
PHP:
$time=time()- 3600*24*3; // последняя цифра задает на сколько дней надо вернутся назад
$time=date('Y-m-d', $time);
 
как вывести с базы MySQL записи именно за 3 последних дня?
за вчера знаю как:
PHP:
$yesterday = date('Y-m-d', mktime(date('H'), date('i'), date('s'), date('m'), date('d') - 1, date('Y')));
каков будет код для вывода именно за три последних дня?



$time=time()-3600*24*3;
$time=date('Y-m-d H:i:s');
SELECT * FROM table WHERE `поле даты`>$time
 
mysql умеет все сам,
PHP:
`date` > NOW()-3*24*60*60
 
как вывести с базы MySQL записи именно за 3 последних дня?
Как-то так:
PHP:
<?php
$db = mysql_connect ("localhost","root","") ;
mysql_select_db ("БАЗА",$db);
$result = mysql_query ("SELECT * FROM ТАБЛИЦА ORDER BY date DESC",$db);
$myrow = mysql_fetch_array ($result);
$time = strtotime("-2 day");
$time = date("Y-m-d", $time);
do
{
echo "Дата новости" .$myrow['date']."<br>";
if ($myrow['date']==$time) break;
}
while ($myrow = mysql_fetch_array ($result));
?>
 
date('Y-m-d', mktime(date('H'), date('i'), date('s'), date('m'), date('d') - 3, date('Y')));

mktime сама определить если дата вышла за границы, поэтому ей очень удобно пользоваться...
 
Все намного проще :) /* MySQL 5+*/

SELECT * from table where `date`/*поле с датой в формате 2011-01-03*/ between DATE_ADD(curdate(), INTERVAL -2 day)/*дата начала*/ and curdate()/*сегодняшняя дата*/;

Можно и такой селект использовать:
SELECT * from table where `date`> DATE_ADD(curdate(), INTERVAL -2 day);
но только при условии что не будет записей "в будущем"

.
 
При этом второй вариант, который показал FaLL3N предпочтительнее, т.к. использует индекс (если он есть, конечно)
 
Все намного проще :)
SELECT * from table where `date` between DATE_ADD(curdate(), INTERVAL -2 day) and curdate();

Можно и такой селект использовать:
SELECT * from table where `date`> DATE_ADD(curdate(), INTERVAL -2 day);
но только при условии что не будет записей "в будущем"
.

Ты не поверишь, можно еще проще:
Код:
SELECT * FROM `table` WHERE TO_DAYS(NOW()) - TO_DAYS(`date`) <= 3
и нет ограничений на отсутствие записей "в будущем". А всего то надо было почитать документацию по работе со временем в MySQL :confused:

Добавлено через 2 минуты
При этом второй вариант, который показал FaLL3N предпочтительнее, т.к. использует индекс (если он есть, конечно)
Он использует поле, а не индекс(и еще не известно какого формата). Пока индекс на поле не поставишь и не проиндексируешь таблицу, поиск по индексу работать не будет.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху