2012-01-12 3 views
4

J'ai un problème en comparant les dates d'une base de données à une semaine en utilisant activerecord. J'essaie de retourner une liste d'événements avec leur date de début moins d'une semaine à partir de maintenant.Codeigniter base de données date-compare

Le event_start_date est dans le format de 2011-06-30 09:00:00

$this->db->select('event_id,title,event_start_date,location'); 
$this->db->where('event_start_date <=',DATE_ADD(NOW(),INTERVAL 7 DAYS)); 
$query = $this->db->get('sd_events'); 

de la difficulté à travailler la bonne syntaxe pour cela, toute aide serait appréciée :-)

Répondre

3

Deux choses. Tout d'abord, avez-vous essayé de mettre votre clause where entre guillemets comme ceci:

$this->db->where('event_start_date <=','DATE_ADD(NOW(),INTERVAL 7 DAYS)'); 

En second lieu, si nécessaire, sautez simplement en utilisant la où la fonction et de mettre toute la requête dans la manière suivante:

$this->db->query('SELECT event_id,title,event_start_date,location FROM sd_events WHERE event_start_date <= DATE_ADD(NOW(),INTERVAL 7 DAYS)'); 
+1

Oui, j'ai fini par écrire dans une grosse requête et je l'ai fait de cette façon, c'est dommage de le séparer en plusieurs lignes, ce qui le rend beaucoup plus facile à lire. –

+0

Qu'est-ce que c'est que hateof using where()? Est-ce dû au code lent? – Exegesis

2

Vous pouvez juste utiliser le premier argument pour accepter les fonctions avec le -> où.

$this->db->select('event_id,title,event_start_date,location'); 
$this->db->where('event_start_date <= DATE_ADD(NOW(),INTERVAL 7 DAYS)', null); 
$query = $this->db->get('sd_events'); 

Cela devrait le mettre dans votre déclaration WHERE juste comme. Sinon, il entrera votre "DATE_ADD" dans des guillemets simples qui n'évaluent pas.

Questions connexes