2011-04-10 4 views
1

J'essaie d'exécuter une requête dans les rails 3 avec la syntaxe suivante: CourseOrder.where("DATE(ordered_at) = ?", date). Mon problème est que les rails économisent tout le temps en UTC, donc dans mon Timezone (+2) à 0h33 c'est le 4ème mais en UTC c'est le 3 du mois. Existe-t-il un moyen d'interroger la partie de date d'un DateTime avec Timezone?Rails obtenir Date de partie de DateTime avec fuseau horaire

+0

Que diriez-vous de convertir la date en UTC plutôt que de convertir ordered_at en heure locale? http://stackoverflow.com/questions/755669/how-do-i-convert-datetime-now-to-utc-in-ruby – patrickmcgraw

+0

Comment puis-je convertir une date en un autre fuseau horaire? Je vois juste des méthodes pour convertir un problème DateTime ou Time – LeonS

Répondre

0

résolu le problème avec un changement dans les valeurs que je compare.

J'ai une valeur Date pour, et maintenant je compare une valeur de date avec une valeur de date qui est meilleure que la comparaison de la valeur de date avec la valeur de date-heure qui doivent échouer. merci de m'avoir mené dans la bonne direction

0

Ne pas utiliser la date, faites comme ceci:

time = DateTime.civil_from_format(:local, 2011, 4, 9) 
CourseOrder.where("ordered_at > ? AND ordered_at < ?", time - 1.day, time) 

Vous stockez une datetime, si requête au lieu d'essayer d'utiliser la date, qui ne tient pas compte de fuseaux horaires.

+0

, c'est que je reçois une date du client. Semble être que je dois dire, la date que vous me fournissez doit être en UTC et tout est cool – LeonS

Questions connexes