2011-07-29 1 views
0

La requête retourne SimpleDB suivante: 51 résultatsAWS SimpleDB clause where 'et' opérateur se comporte de façon inattendue

select * from logger where time > '2011-07-29 17:45:10.540284+00:00' 

Cette requête renvoie 20534 résultats:

select * from logger where time < '2011-07-29 17:50:08.615626' 

Ces deux requêtes renvoient toutes les deux 0 !! ?:

select * from logger where time between '2011-07-29 17:45:10.540284+00:00' and '2011-07-29 17:50:08.615626' 

select * from logger where time > '2011-07-29 17:45:10.540284+00:00' and time < '2011-07-29 17:50:08.615626' 

Que manque-t-il ici?

Répondre

2

Mais l'un de vos 51 résultats est-il retourné à partir de la première requête dans le délai que vous recherchez? Si elles sont toutes plus tard que 17: 50: 08.615626, vos requêtes fonctionnent comme prévu.

Je suis également méfiant du fait que vous êtes inconsistant dans la façon dont vous représentez le temps. Vous devriez vraiment utiliser les horodatages ISO 8601 si vous souhaitez une correspondance lexicographique cohérente avec SDB.

L'autre option est que les requêtes prennent plus de temps que le délai d'attente de la requête à exécuter, vérifiez-vous les erreurs? Finalement, peut-être que le SDB est mauvais et la requête est un peu lente. Dans ces conditions, vous pouvez trouver que vous obtenez 0 résultat mais obtenez un jeton suivant - et les résultats réels suivent dans le lot suivant.

Est-ce que cela aide?

+0

Oh, c'est vrai - J'ai complètement raté de vérifier que toutes mes entrées étaient dans la gamme originale. Ouais, il s'avère qu'il n'y en a pas (bien que je sois presque sûr qu'il y en a eu un moment, peut-être que je l'ai en quelque sorte nuké). – josh

Questions connexes