как написать запрос к базе данных для поиска месяца в поле даты способом Codeigniter? - PullRequest
2 голосов
/ 02 января 2012

Подскажите, пожалуйста, как написать запрос к базе данных для поиска месяца в поле даты способом Codeigniter? Или не могли бы вы показать мне, как написать следующий запрос в виде codeigniter?

Заранее спасибо:)

 "SELECT attendanceno FROM attendance WHERE (barcodeid = '$studentid') AND  (month(attendancedate)='$month' AND year(attendancedate)='$year') ";

Редактировать

Спасибо Стефану, который ответил на мой вопрос ниже. Прочитав его пост, я также попробовал следующий скрипт и обнаружил, что он работает. Вот почему я просто хотел поделиться, если кто-то захочет его использовать. Но вся заслуга достается Стефану. :)

  $this->db->select('*');
  $this->db->from('attendance');
  $this->db->where('barcodeid', $studentid);
  $this->db->where('month(attendancedate)', $month);
  $this->db->where('year(attendancedate) ', $year);
  $this->db->order_by('attendancedate ','ASC');     
  $getData = $this->db->get('', $perPage, $uri);                        

Ответы [ 2 ]

2 голосов
/ 03 января 2012

Если дата и месяц являются строками:

$this->db->query("SELECT attendanceno FROM attendance WHERE (barcodeid = ?) AND  (month(attendancedate)=? AND year(attendancedate)=?)", array($studentid, $month,$year));

если они целые числа

$this->db->query("SELECT attendanceno FROM attendance WHERE (barcodeid = ?) AND  (MONTH(attendancedate)='?' AND YEAR(attendancedate)='?')", array($studentid, $month,$year));
0 голосов
/ 17 февраля 2017

Допущения:

  • CodeIgniter 2.2.0
  • База данных Oracle 11

    //Option 1, raw SQL
     $sql = "
      SELECT DISTINCT <DATE_COLUMN>
      FROM <TABLE NAME>
      WHERE 1=1
        AND EXTRACT(month FROM <DATE_COLUMN>) = $month
        AND EXTRACT(year FROM <DATE_COLUMN>) = $year
     ";
     $query = $this->db->query($sql);
    
    //Option 2, CI db functions
    $this->db->distinct();
    $this->db->select('<DATE_COLUMN>');
    $this->db->where('EXTRACT(month FROM <DATE_COLUMN>) =', $month);
    $this->db->where('EXTRACT(year FROM <DATE_COLUMN>) =', $year);
    $query = $this->db->get('<TABLE NAME>');
    

оба приведут к следующемус $ month = 3 и $ year = 2017:

     CI_DB_oci8_result Object
     (
         [stmt_id] => Resource id #9
         [curs_id] => 
         [limit_used] => 
         [conn_id] => Resource id #1
         [result_id] => 1
         [result_array] => Array
             (
                 [0] => Array
                     (
                         [<DATE_COLUMN>] => 22-MAR-17
                     )

                 [1] => Array
                     (
                         [<DATE_COLUMN>] => 14-MAR-17
                     )

                 [2] => Array
                     (
                         [<DATE_COLUMN>] => 02-MAR-17
                     )

                 [3] => Array
                     (
                         [<DATE_COLUMN>] => 06-MAR-17
                     )

             )

         [result_object] => Array
             (
             )

         [custom_result_object] => Array
             (
             )

         [current_row] => 0
         [num_rows] => 4
         [row_data] => 
     )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...