Получение результатов с помощью даты и времени - PullRequest
0 голосов
/ 12 апреля 2011

Я пытаюсь получить результаты между двумя временными интервалами. Я делал это раньше с другим веб-приложением, которое я создал, используя Y-m-d, но теперь у меня проблемы с Y-m-d H:i:s. Код ниже (конечно, в целях безопасности замаскирован):

$m5b = date('Y-m-d H:i:s',mktime(0,0,0,0,0,0,date('Y'),date('m'),date('d'),date('H'),date('i')-5,date('s')));
$npm = date('Y-m-d H:i:s',mktime(0,0,0,0,0,0,date('Y'),date('m'),date('d'),date('H'),date('i')+1,date('s')));
$gm = mysql_query("SELECT * FROM acm WHERE lgt !='0000-00-00 00:00:00' AND logged BETWEEN '$m5b' AND '$npm'");

Ответы [ 3 ]

2 голосов
/ 12 апреля 2011

Я бы настоятельно рекомендовал прочитать о функции PHP strtotime(), а если вы используете последнюю версию PHP5, тогда объект DateTime.Это должно очистить ваш код без конца.

С strtotime ()

$t = strtotime('+5 mins');
$mysqlFormatted = date('Y-m-d H:i:s', $t);

С классом DateTime

$t = new DateTime();
$t->modify('+5 mins');
$mysqlFormatted = $t->format('Y-m-d H:i:s');
1 голос
/ 12 апреля 2011

мне кажется, что вы передаете слишком много параметров в mktime () вы передаете 12 параметров?

Редактировать: Используя код из ответа обязывает, на самом деле это должно быть:

$m5b = date("Y-m-d H:i:s" , (time() - (5*60)) ); // 5 mins in seconds
$npm = date("Y-m-d H:i:s" , (time() + (1*60)) );
0 голосов
/ 12 апреля 2011

mktime согласно php.net:

   int mktime (    
    [ int $hour = date("H") 
    [, int $minute = date("i") 
    [, int $second = date("s") 
    [, int $month = date("n") 
    [, int $day = date("j") 
    [, int $year = date("Y") 
    [, int $is_dst = -1 ]]]]]]] )
...