쿼리에 많은 문제가 있습니다. 나는 이것을 어떻게 잘 설명 할 지 모르지만, 시도 할 것입니다.시간대를 고려하면서 datetime 범위 쿼리
기본적으로 datetime 필드에 시간대와 함께 게시 된 날짜와 시간을 유지하는 'posted_at'필드가있는 여러 개체가 있습니다. 내가 쿼리하고 그 개체와 날짜로 범위를 얻을 필요가있다.
이전에는 Date로 변환하고 다른 Date 개체와 비교했습니다. Postgre 날짜로 변환 할 때
Date(posted_at) >= :start_date AND Date(posted_at) <= :end_date
그러나, 그 쿼리에 정확하지 않고 결과를 발생 시간대 정보를 분실 : 쿼리는 다음과 같이이었다.
그래서,이 변경이 나에게 정확한 결과를 얻을 수 있지만, 그것은 또한 끔찍한 성능을 가지고 있으며, 내 응용 프로그램에서 일부 시간 제한을 일으키는
if start_date then
start_time = Time.zone.parse("#{start_date.year}-#{start_date.month}-#{start_date.day}")
conditions << "posted_at >= :start"
hash[:start] = start_time
end
if end_date then
end_time = Time.zone.parse("#{end_date.year}-#{end_date.month}-#{end_date.day}").end_of_day
conditions << "posted_at <= :end"
hash[:end] = end_time
end
.
이 쿼리를 수행하는 다른 방법을 찾지 못하고 정확한 결과를 유지할 수 없습니다. 누군가에게 조언이나 아이디어가 있습니까?
미리 감사드립니다.
감사합니다. Denis, 그건 정말로 알고 있어야합니다. – MarceloJ