Tôi có ứng dụng đường ray có kiểu Checkin
. Tôi muốn tìm tất cả hồ sơ nằm trong phạm vi thời gian cụ thể cho ngày hiện tại. Làm cách nào để viết một số where
để nhận tất cả hồ sơ được tạo từ 12 giờ trưa đến 4:30 chiều?Truy vấn đường ray giữa hai lần
7
A
Trả lời
36
Câu trả lời của @ x1a4 phải phù hợp với bạn nhưng bạn có thể thực hiện theo cách dễ đọc hơn và ngắn hơn, sử dụng dải ô.
Chekin.where(created_at: Time.parse("12pm")..Time.parse("4:30pm"))
Nó sẽ tạo ra một cái gì đó như:
SELECT "checkins".*
FROM "checkins"
WHERE ("checkins"."created_at" BETWEEN '2012-05-28 12:00:00.000000' AND '2012-05-28 16:30:00.000000')
Bạn có thể thay đổi Time.parse("12pm")
với bất kỳ cách nào khác để tạo ra một thời điểm.
8
này có vẻ như nó sẽ làm việc, giả sử múi giờ UTC:
Record.where('created_at > ? AND created_at < ?', Date.today + 12.hours, Date.today + 16.5.hours)
hoặc với một BETWEEN
:
Record.where('created_at BETWEEN ? AND ?', Date.today + 12.hours, Date.today + 16.5.hours)
BETWEEN
có thể hoặc không có thể bao gồm các giá trị thứ hai trong phạm vi. Postgres includes it.
0
Bạn có thể sử dụng dưới đây đá quý để tìm các hồ sơ giữa ngày,
này gem khá dễ sử dụng và rõ ràng hơn [By sao] [1]. Tôi đang sử dụng đá quý này và API rõ ràng hơn và tài liệu cũng được giải thích rõ ràng.
Post.between_times(
Time.zone.now - 3.hours, # all posts in last 3 hours
Time.zone.now
)
Ở đây bạn có thể vượt qua lĩnh vực của chúng tôi cũng Post.by_month("January", field: :updated_at)
hãy xem tài liệu và thử nó.
Các vấn đề liên quan
- 1. Truy vấn để chọn giữa hai lần trong ngày
- 2. Lọc truy vấn ActiveRecord trong đường ray
- 3. Sử dụng truy vấn hai lần mysql_fetch_array
- 4. đường ray: ngăn thông báo flash hiển thị hai lần
- 5. Phép trừ giữa hai truy vấn sql
- 6. làm cách nào tôi có thể ánh xạ hai cột trong truy vấn đường ray đơn
- 7. Đường ray: Sắp xếp truy vấn theo thông số?
- 8. Hợp nhất hai ứng dụng đường ray
- 9. Đường ray hợp nhất hai mảng băm?
- 10. Thực tiễn tốt nhất giữa hai truy vấn này
- 11. LINQ truy vấn giữa hai danh sách các đối tượng
- 12. Truy vấn SQL KHÔNG phải giữa hai ngày
- 13. Hai mysqli truy vấn
- 14. Tính số phút có giữa hai lần
- 15. Tính thời gian giữa hai lần Android
- 16. Tiêu chí Mongo mùa xuân truy vấn hai lần cùng một trường
- 17. Nhận tuyến đường phù hợp từ URL trong đường ray (một lần nữa)
- 18. ký hiệu đơn giữa ứng dụng Vbulletin và đường ray
- 19. Đường ray: Đặt hàng theo tổng của hai cột
- 20. Phạm vi đường ray cho các giá trị chỉ giữa hai ngày
- 21. Làm cách nào để chuyển đổi giữa đường ray 3.2.13 và đường ray 4.0.0?
- 22. Thực hiện truy vấn một lần đến một cơ sở dữ liệu khác và bảng
- 23. Có thể truy cập hướng dẫn đường ray cho đường ray 2.3 không?
- 24. kết hợp các kết quả từ hai truy vấn và thứ tự của created_at? [ray 3]
- 25. Đường ray 3: Sự khác biệt giữa Relation.count và Relation.all.count
- 26. Cách xem các truy vấn mongoid trong di tích mới trong ứng dụng đường ray
- 27. Cách chuyển dữ liệu sang truy vấn IN trong đường ray 3
- 28. Chuyển các giá trị param để redirect_to dưới dạng chuỗi truy vấn trong đường ray
- 29. Đường ray: Bảo quản các tham số chuỗi truy vấn GET trong link_to
- 30. Làm thế nào để chuyển các truy vấn để thực hiện hiệu quả trong đường ray?
Bạn đang sử dụng cơ sở dữ liệu nào? các chức năng để có được giờ trong ngày sẽ khác nhau. Sẽ dễ nhất nếu bạn lưu trữ giờ/phút trong ngày ngoài thời gian. –
Tôi đang sử dụng postgresql. Tôi đang sử dụng cột dấu thời gian 'created_at' chuẩn mà Rails cung cấp –