2011-03-11 3 views
0

J'ai une colonne de type datetime dans la table MySql. Les valeurs enregistrées sont comme ceci:Enregistrements de requête basés sur la colonne datetime

2008-02-15 17:21:56 
2008-02-15 17:22:02 
2008-02-15 17:22:03 

Maintenant, je veux interroger des enregistrements à partir de cette colonne, mais je ne partie partie pas de temps ce jour. Donc, j'interroge comme ça dans zend.

$select->where('tableName.columnName = ?', '2008-02-15'); 

Mais il ne correspond à aucun enregistrement. Comment puis-je interroger sans partie de temps.

Merci

Répondre

3

essayer cette WHERE DATE(tableName.columnName) = '2008-02-15'

+0

Cela fonctionne. Merci – Awan

2

La réponse @Shota a fourni fonctionnera, mais il empêchera MySQL d'utiliser tous les index sur la colonne datetime en raison de la fonction DATE avoir à être appelé à chaque ligne de la table pour voir si cela correspond.

Si vous codez l'intervalle de temps dans la requête, il donnera le même résultat et permettra toujours l'utilisation des index.

par ex. $select->where('tableName.columnName >= ? AND tableName.columnName <= ?', '2008-02-15 00:00:00', '2008-02-15 23:59:59');

Veuillez noter que je peux avoir la syntaxe php erronée mais vous devriez avoir l'idée.

+0

Merci. C'est aussi une bonne solution dans certains cas. – Awan

Questions connexes