Rails ActiveRecord Trouver / Recherche par Date
Je suis en train de rechercher des enregistrements par "created_at' date - la base de données de la colonne est de type 'datetime' et
Je suis à l'aide de l'UI DatePicker de jQuery
mon url ressembler à ceci: "localhost:3000/users_supported?selected_date=2012-10-31"
Jusqu'à présent, je suis en train de faire du bon 🙂 et ma requête au contrôleur ressemble à ceci:
@support_histories = current_agent.support_histories.where(:created_at => Date.parse(params[:selected_date]))
Comment extraire les enregistrements par 'date' seulement à partir de la 'datetime' db colonne
J'ai essayé de faire cela dans les Rails de la Console, mais pas de chance:
sh = SupportHistory.where(:created_at => DateTime.parse('2012-10-31'))
sh = SupportHistory.where(:created_at => Date.parse('2012-10-31'))
sh = SupportHistory.where(:created_at => DateTime.strptime('2012-10-31', '%Y-%m-%d'))
J'ai eu des enregistrements si je fais comme mentionné ci-dessous, mais ce n'est pas utile pour moi car je suis en train de rechercher l'enregistrement par 'date' pas par 'DateTime'
sh = SupportHistory.where(:created_at => '2012-10-31 19:49:57')
OriginalL'auteur Syed | 2012-11-03
Vous devez vous connecter pour publier un commentaire.
Fuseaux Horaires peut être un sujet de préoccupation, vous devez regarder dans, mais ce devrait fonctionner si tous tes temps sont dans le même fuseau horaire.
La Section 2.2.2 du guides.rubyonrails.org/active_record_querying.html est similaire à la réponse que j'ai donné. Vous pourriez probablement faire quelque chose de créatif comme
select("date(created_at) as ordered_date).where(:ordered_date => ____)
mais j'aime lebeginning_of_day..end_of_day
solution.C'est un élégant, Railsy solution. 🙂
OriginalL'auteur Jason Noble
J'ai résolu ce problème par la création d'une méthode dans le modèle comme ci-dessous,
Dire, mon modèle est un billet.rb
ensuite, j'ai interrogé comme ça,
Cela me donne des résultats précis, qui correspond à la date choisie par l'utilisateur.
OriginalL'auteur Abhiram
Une solution simple, j'utilise parfois, c'est placer la date(heure) sous forme de texte dans la base de données plutôt que d'analyser la chaîne en date sur le côté application. Pour votre cas, ce serait:
Pourrait ne pas être le plus efficace sur la base de données, mais permet d'économiser beaucoup de pain pita sur le côté application.
OriginalL'auteur silverdr