Duda Active Record (Codeigniter) y MONTH (MySQL)

Tunnecino

Buenas tardes,

Estoy trabajando en un proyecto con eventos, y me he topado con un inconveniente al usar Active Record. Quiero usar la función MySQL MONTH() para sacar los eventos de los meses (y año) que quiera, pero no se como meterlo en el active record:

->where("MONTH('$actual')", " ", false)

->where("MONTH('$actual')", NULL, false)

He probado así, también con soluciones que me he encontrado en stackoverflow... pero nada, como mucho consigo que me devuelva querys tales como:

SELECT * WHERE MONTH('2014-01-09') = AND ...

SELECT * WHERE MONTH('2014-01-09') IS NULL = AND ... 

Etcétera.

Alguien sabe como puedo meter esa función usando Active Record, y no tener que escribir la query a mano.

Grasia de hamtevraso

DarkSoldier

No se si te servira:

from doc

$this->db->where() accepts an optional third parameter.

If you set it to FALSE, CodeIgniter will not try to protect your field or table names with backticks.

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);
so do something like :

$this->db->where('mo', 'MONTH(so_date)' , FALSE);


$this->db->where('mo = MONTH(so_date)');

Sacado de aquí

1 respuesta
Tunnecino

Ya he probado eso #2, lo comento en #1:

->where("revision_fecha", "MONTH('$actual')", false)

Me devuelve:

... WHERE revision_fecha = MONTH('2014-01-09')
AND `revision_instalacion` =  '7'

Eso no me vale, yo no busco un campo en concreto, busco los registros por esa fecha.

Edit: También si hago, como pone en otros tantos posts de stackoverflow, y dejo directamente la query en el where(), me deja lo que dije antes, el IS NULL:

->where("MONTH('$actual')")
... WHERE MONTH('2014-01-09') IS NULL ...

Edit2: Al final, o no estaba usando bien la función, o así es como tiene que ser, pero ya me funciona usando:

$this->db->select('*')->from('revisiones')->where('revision_instalacion', $instalacion_id)->where("MONTH(`revision_fecha`) = $actual_month")->where("YEAR(`revision_fecha`) = $actual_year");

Usuarios habituales

  • Tunnecino
  • DarkSoldier