2013-02-20 2 views
0

В моей БД У меня есть отметки времени UNIX в качестве сроков для заданий, которые необходимо запустить. В определенный день или в определенный час мне хотелось бы знать, какие рабочие места нужно выполнять. У меня есть следующий код для запроса моей таблицы заданий:Запрос, чтобы получить строки с отметкой времени UNIX сегодня

$job = Model_Job::find('first', 
array(
    'where' => array(
    array('status_id', 1), // active 
    array('due_date', today) 
))) 

Последний массив - это просто псевдокод, конечно. Я придумал следующий код, чтобы выяснить, существует ли сегодня метка времени.

date('Ymd', strtotime(Date::forge(time())->get_timestamp())) == date('Ymd', strtotime($job->due_date)) 

Как я могу объединить это с моим запросом? Есть ли лучший способ, чтобы цикл через запрошенный массив?

+0

Не можете ли вы запросить дату db? – Techmonk

+0

проблема заключается в том, что отметка времени Unix может быть в любое время дня, например, 08:42:18, по сравнению с днем, который является периодом времени. – Sebastian

+0

Вы можете проверить со своей табличной датой col Techmonk

ответ

0

Теперь это, вероятно, не очень хороший способ, но это было первое, что пришло на ум.

$ today = strtotime ('today 00:00');

Вы можете использовать дату из этого фрагмента и установить WHERE due_date > $today. Я не совсем уверен, как это сделать с вашей моделью базы данных.

Редактировать: Это зависит от того, что у вас есть правильные настройки часового пояса в вашей конфигурации php.

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

$todaystart = strtotime('today 00:00')); 
$todayend = strtotime('today 23:59:59')); 

и использование BETWEEN оператора в вашем SQL- запрос

+0

Это не сработает, потому что оно получит все будущие сроки. – Sebastian

+0

ах, конечно, но это было бы достаточно просто, чтобы получить последнюю временную метку дня, используя ту же технику, а затем вместо этого используйте оператор «BETWEEN». – hank

+0

'strtotime()' возвращает временную метку unix, нет необходимости использовать 'date()' еще раз. – Arjan