Une autre idée.
En fait, je me suis heurté sur un problème similaire sous Oracle et la réponse est vraiment logique, sauf qu'on y pense jamais : si le type est DATETIME au lieu de DATE. Lorsqu'on fait une recherche entre deux dates, il faut aussi tenir compte des heures. En effet, si on compare à une date en faisant par exemple
col <= DATE(2009-05-29)
la comparaison sera faite par rapport au 29 mai 2009 à 00h00 et non à minuit : donc une colonne avec pour valeur '2009-05-29 11:10' n'apparaitra pas dans les résultats alors que c'est précisément le contraire qu'on attend. Il faudrait donc faire
col <= DATETIME('2009-05-29 23:59')
______________________________________________________________
Une question bien formulée, c'est un problème bien compris : ça représente déjà les 3/4 de la réponse ;)