2012-02-15 1 views
4

Мне нужно найти все даты между двумя датами; это дата начала и дата окончания. Вот мой запрос, но он не делает то, что мне нужно для этого.Как найти все даты между двумя датами в Zend Framework Query

В моей таблице у меня есть имя столбца date_created, которое находится в таком формате, как этот 2011-06-09 06:41:10. Я хочу, чтобы удалить эту часть 06:41:10 поэтому я подаю

DATE(date_created) 

После этого, как мой DatePicker находится в этом формате 02/07/2012 изменить формат через DATE_FORMAT().

$start_date and $end_date мои переменные подходит для сравнения и в формате 02/07/2012

$select = $DB->select() 
->from('sms', array(
    'sms_id', 
    'sms_body', 
    'sms_sender', 
    'sms_recipient', 
    'date_created', 
    'sms_type')) 
->where('phone_service_id = ?', $phone_service_id) 
->where("DATE_FORMAT(DATE(date_created), '%m/%d/%Y') >= ?", $start_date) 
->where("DATE_FORMAT(DATE(date_created), '%m/%d/%Y') <= ?", $end_date) 
->order("".$option_call_log." ".$option_call_log_asc_desc); 

Что я отсутствующей в запросе? Почему это не сравнивает $ start_date и $ end_date?
Забудьте о $option_call_log и $option_call_log_asc_desc.

ответ

8

Если ваши даты проходят через формат MM/DD/YYYY, то вместо того, чтобы заставить MySQL выполнять всю работу, я бы преобразовал их в YYYY-MM-DD HH: II: SS в PHP, что позволяет вы должны сделать простой запрос на основе диапазона в MySQL. Итак:

$start_date_formatted = date('Y-m-d', strtotime($start_date)).' 00:00:00';   
$end_date_formatted = date('Y-m-d', strtotime($end_date)).' 00:00:00'; 

$select = $DB->select() 
    ->from('sms', array('sms_id','sms_body','sms_sender','sms_recipient','date_created','sms_type')) 
    ->where('phone_service_id = ?', $phone_service_id) 
    ->where("date_created >= ?", $start_date_formatted) 
    ->where("date_created <= ?", $end_date_formatted) 
    ->order("".$option_call_log." ".$option_call_log_asc_desc) 
    ; 

(Если даты вашего выбора даты, на самом деле в формате DD/MM/YYYY, то все немного более неудобным.)

+0

DJ Fountain спас мою жизнь, почему об этом никогда не говорили в документах ZF2? – Erik

1

изменения обновления часы включить в последний день $ end_date_formatted = date ('Ym-d', strtotime ($ end_date)). ' 23:59:59' ;