2011-09-12 9 views
8

Esto se ha preguntado mucho, pero todavía estoy enfrentando algunos problemas con él.Fecha de consulta en Mongoid

Tengo la fecha que recibo y la estaba almacenando como Fecha. Necesito consultar en mayor que y menor que, así que lo cambié a tiempo, lo intenté de nuevo, pero estoy obteniendo resultados extraños.

que estoy haciendo esto

Class.where(:event_date.gt => Time.parse(Date.today)) 

y yo estoy poniendo discos antiguos, 1940, 1960 y otros. Traté de convertir el tiempo agregando .utc al final, comparando contra Date.today solamente, pero nada solucionó el problema hasta el momento. Este es el selector siendo generado por Mongoid

selector: {:date_utc=>{"$gte"=>Sat Sep 10 21:00:00 UTC 2011}}, 

recibo de la fecha en este formato "2011-09-11" y almacenarlo en el campo Hora. Intenté analizar eso como Time utc también, sin suerte.

¿Alguna idea? Estoy usando Mongoid 2.0.2. Las versiones posteriores parecen incompatibles con otras extensiones que estoy usando.

[ACTUALIZACIÓN]

Así que el problema es con las viejas fechas antes de 1970, aparentemente. Cómo lidiar con ellos es la pregunta ahora.

Respuesta

2

Este es un error conocido en Mongo. Ver ISSUE 405

La razón es que Mongo usa un número sin firmar para almacenar las fechas, por lo que cualquier cosa anterior a la época se traslada hacia el futuro.

Afortunadamente este problema se ha solucionado con la versión estable 2.0 lanzada hoy. Actualizar a esta versión debería resolver su problema.

+0

Gracias. Como el tema ha estado abierto desde el año pasado, me parece bastante afortunado. ¿Eso significa que necesito actualizar Mongoid también? Esto parece plantear problemas para mí –

Cuestiones relacionadas