Получить данные из базы данных, которая находится между двумя датами - PullRequest
1 голос
/ 26 сентября 2011

Я пишу систему, которая будет показывать данные за выбранный месяц. Пользователь может выбрать месяц, который он хочет просмотреть, затем он создает URL-адрес примерно так .com / page.php? Month = 03 страница, как вы можете догадаться, примет идею и затем использует ее для получения данных из базы данных. с этого месяца.

Теперь, исходя из месяца в URL-адресе, который я создаю для переменной, $ startdate $ enddate, дата начала, основанная на этом примере, равна 2011-03-01, затем я добавляю 29 или 30 к части дней, в зависимости от того, месяц имеет 31 или 30 дней. Итак, я делаю даты как это:

$startdate = mktime(0,0,0,date("$month"),date("01"),date("2011"));
if( $month==04 || $month==06 || $month==9 || $month==11)
{
    $enddate = mktime(0,0,0,date("$month"),date("01")+29,date("2011"));
}
else
{
    $enddate = mktime(0,0,0,date("$month"),date("01")+30,date("2011"));
}

Теперь, когда я пытаюсь получить данные из базы данных с этими переменными, они, кажется, не работают, это запрос:

$getresults = mysql_query("SELECT * FROM table1 WHERE date BETWEEN $startdate AND $enddate ORDER BY date ASC");

Дело в том, что если я заменю переменные на жестко запрограммированные даты, то их работы станут удовольствием ... У кого-нибудь есть идеи? я думал, что это как-то связано с форматированием дня? в моей базе данных его "Y-м-д", а также то же самое в php.

спасибо за любую помощь людям, которых я действительно застрял на этом.

Ответы [ 2 ]

5 голосов
/ 26 сентября 2011

mktime создает даты в виде меток времени Unix (например, «1317046059»), но в вашей таблице даты хранятся в другом формате (например, «2011-09-26»).Чтобы ваши запросы работали, вам нужно будет преобразовать ваши временные метки в соответствующий формат:

$enddate = date( 'Y-m-d', mktime(0,0,0,date("$month"),date("01")+29,date("2011")) );

Обновление:

На основании вашего нового комментария, что ваши датыхранящиеся в вашей базе данных как метки времени, вам необходимо отформатировать даты следующим образом:

$enddate = date( 'Y-m-d h:i:s', mktime(0,0,0,date("$month"),date("01")+29,date("2011")) );
1 голос
/ 26 сентября 2011

Вы должны использовать пару операторов var_dump в ключевых местах для оценки вашего кода. Таким образом, вы можете точно знать, как выглядят ваши данные, включая их формат, а затем вы можете выяснить, как форматировать эту дату так, как вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...