PDA

Просмотр полной версии : MySQL. Как реализовать выборку за предыдущий день, месяц


NNNS
20.12.2007, 06:29
Собственно сабж.
Дата в базе формата гггг-мм-дд.

Как сделать выборку за предыдущий день и месяц?

XopoIII
20.12.2007, 06:44
может что то типа этого

$viborka=date("Y-m-d");
'SELECT *FROM table WHERE date LIKE '$viborka' ';

NNNS
20.12.2007, 06:47
XopoIII, будут выводиться результаты с текущей датой

n1†R0x
20.12.2007, 06:48
угу, только разбить на три переменных типа int и потом передавать строку, которая будет включать в себя 3 эти переменные.
int - чтобы мат. операции совершать, типа d--; и т.д.

VampiRUS
20.12.2007, 07:57
<?php
echo date('Y-m-d',time()-60*60*24),"\n";//вчара
echo date('Y-m-d',time()-60*60*24*7);//неделю назад
?>

Isis
20.12.2007, 09:58
Воспользуйся функцией mktime - она корректно обрабатывает отрицательные даты.

<?php
echo date("M-d-Y", mktime(0, 0, 0, date("m"), date("d") - 1)); #Вчера
echo date("M-d-Y", mktime(0, 0, 0, date("m"), date("d") - 7)); #Неделю назад
?>

groundhog
20.12.2007, 10:59
Господи, да какие же вы все извращенцы! Ну нафик задачу, которая решается средствами SQL размазывать по коду и пихать в запрос?! Неужели никто не слышал про interval?

select CURRENT_TIMESTAMP - interval 1 day;
select CURRENT_TIMESTAMP - interval 1 month;
Если нужно вычесть более извращённый период, тогда воспользуйтесь функцией DATE_SUB(), если нужно отформатировать полученный результат, воспользуйтесь функцией DATE_FORMAT(). Да и вообще - курите мануалы... Покурите, например, тут:

http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html