web-dev-qa-db-fra.com

codeigniter: Obtenir les données postées entre deux dates

Comment puis-je récupérer des données de la base de données en interrogeant des enregistrements entre deux dates à l'aide de l'activerecord de codeigniter?

merci

40
Thomas John

Cela ressemble à ce dont vous avez besoin:

$this->db->where('order_date >=', $first_date);
$this->db->where('order_date <=', $second_date);
return $this->db->get('orders');
104
Thorpe Obazee

Essaye ça:

$this->db->where('sell_date BETWEEN "'. date('Y-m-d', strtotime($start_date)). '" and "'. date('Y-m-d', strtotime($end_date)).'"');

J'espère que ça va marcher

9
Chakradhar

Cela a bien fonctionné pour moi

$this->db->where('sell_date BETWEEN "'. date('Y-m-d', strtotime($start_date)). '" and "'. date('Y-m-d', strtotime($end_date)).'"');
4
Madhu

Cela a fonctionné pour moi:

$this->db->where('RecordDate >=', '2018-08-17 00:00:00');
$this->db->where('RecordDate <=', '2018-10-04 05:32:56');
1
jonmary karanzi
$query = $this->db
              ->get_where('orders',array('order_date <='=>$first_date,'order_date >='=>$second_date))
              ->result_array();
0
user28864

Puisse ceci vous être utile .... avec des tables de trois

public function get_details_beetween_dates()
    {
        $from = $this->input->post('fromdate');
        $to = $this->input->post('todate');

        $this->db->select('users.first_name, users.last_name, users.email, groups.name as designation, dailyinfo.amount as Total_Fine, dailyinfo.date as Date_of_Fine, dailyinfo.desc as Description')
                    ->from('users')
                    ->where('dailyinfo.date >= ',$from)
                    ->where('dailyinfo.date <= ',$to)
                    ->join('users_groups','users.id = users_groups.user_id')
                    ->join('dailyinfo','users.id = dailyinfo.userid')
                    ->join('groups','groups.id = users_groups.group_id');

        /*
        $this->db->select('date, amount, desc')
                 ->from('dailyinfo')
                 ->where('dailyinfo.date >= ',$from)
                 ->where('dailyinfo.date <= ',$to);
        */

        $q = $this->db->get();

        $array['userDetails'] = $q->result();
        return $array;
    }
0
Pratik Butani

Si vous souhaitez comparer les dates SQL, vous pouvez essayer ceci:

$this->db->select();
$this->db->from('table_name');
$this->db->where(' date_columnname >= date("'.$from.'")');
$this->db->where( 'date_columnname <= date("'.$to.'")');

Cela a fonctionné pour moi (PHP et MySQL).

0
DRO

si vous voulez forcer l’utilisation du mot clé BETWEEN sur l’assistant de requête Codeigniter. Vous pouvez utiliser où sans échapper false comme ce code. Fonctionne bien sur CI version 3.1.5. J'espère que ça aidera quelqu'un.

if(!empty($tglmin) && !empty($tglmax)){
        $this->db->group_start();
        $this->db->where('DATE(create_date) BETWEEN "'.$tglmin.'" AND "'.$tglmax.'"', '',false);
        $this->db->group_end();
    }
0
drosanda