Ho un'app per rotaie con un modello Checkin
. Voglio trovare tutti i record che si trovano all'interno di un intervallo di tempo specifico per il giorno corrente. Come scrivere un where
per ottenere tutti i record creati tra le 12:00 e le 16:30?Rails query tra due volte
risposta
@ x1a4 La risposta dovrebbe essere buona per te, ma puoi farlo in un modo più leggibile e più breve, utilizzando un intervallo.
Chekin.where(created_at: Time.parse("12pm")..Time.parse("4:30pm"))
Si dovrebbe generare qualcosa come:
SELECT "checkins".*
FROM "checkins"
WHERE ("checkins"."created_at" BETWEEN '2012-05-28 12:00:00.000000' AND '2012-05-28 16:30:00.000000')
È possibile modificare Time.parse("12pm")
con qualsiasi altro modo per creare un momento.
Questo appare come avrebbe funzionato, assumendo fuso orario UTC:
Record.where('created_at > ? AND created_at < ?', Date.today + 12.hours, Date.today + 16.5.hours)
o con un BETWEEN
:
Record.where('created_at BETWEEN ? AND ?', Date.today + 12.hours, Date.today + 16.5.hours)
BETWEEN
può o non può includere il secondo valore nella gamma. Postgres includes it.
Si potrebbe utilizzare sotto gemma per trovare i record tra le date,
Questo gem abbastanza facile da usare e più chiara [By stelle] [1]. Sto usando questo gioiello e l'API è più chiara e la documentazione è anche ben spiegata.
Post.between_times(
Time.zone.now - 3.hours, # all posts in last 3 hours
Time.zone.now
)
Qui si poteva passare il nostro campo anche Post.by_month("January", field: :updated_at)
consultare la documentazione e provarlo.
- 1. Rails 3.1 richieste remote inviate due volte
- 2. Rails 3: Modulo inviato due volte
- 3. Sottrazione tra due query sql
- 4. Calcola il tempo tra due volte Android
- 5. Query SQL NON tra due date
- 6. PDO Inserisce i dati due volte su una singola query
- 7. Rails/parametri forti condivise tra due controllori
- 8. File JS inclusi due volte nell'app per rails
- 9. Perché le mie risorse Rails vengono precompilate due volte?
- 10. Rails 3.2.1, risorse precompilate due volte sulla distribuzione?
- 11. Pipeline di asset di rails: JavaScript in esecuzione due volte
- 12. Calcola la differenza di tempo tra due volte javascript
- 13. Ottenere la differenza di tempo tra due volte in javascript
- 14. Calcola la differenza tra due volte in Android
- 15. Controllare la differenza in secondi tra due volte
- 16. Rails ActiveRecord - come recuperare i record tra due date
- 17. onTouchEvent esegue due volte
- 18. log4j registrazione due volte
- 19. Git stash due volte
- 20. keyboardWillShow chiamato due volte
- 21. Chiama RenderSection due volte ...?
- 22. didMoveToParentViewController chiamato due volte
- 23. ListSelectionListener invocato due volte
- 24. Query da selezionare tra due ore del giorno
- 25. Rails nidificate query SQL
- 26. Query activerecord Rails confrontando due attributi dello stesso record
- 27. jquery richiesta pjax invio due volte
- 28. È necessario eseguire ORDINE di due volte
- 29. Libreria statica caricata due volte
- 30. Ereditare un tratto due volte
Quale database stai utilizzando? le funzioni per ottenere l'ora del giorno saranno diverse. Sarà più semplice se memorizzi l'ora/minuto del giorno in aggiunta al tempo. –
Sto usando postgresql. Sto usando la colonna timestamp standard 'created_at' che Rails fornisce –