Ruby on Rails는 날짜를 쿼리하여 데이터베이스에서 UTC에서 사용자 시간대로 변환하여 datetime을 검색합니다.

리테시 카타 레

내 응용 프로그램은 사용자의 출석 날짜 시간을 UTC로 변환하여 2014-11-23 08:42:00으로 저장하며, 응용 프로그램에는 2014-11-23으로 날짜를 입력하여 출석 만 검색하는 사용자 지정 검색 방법이 있습니다. 이제 문제는 2014-11-23 날짜가 다른 시간과 Rails가 UTC로 변환하여 저장 한 5 명의 참석자가 있다는 것입니다. 따라서 2 개 레코드의 경우 변환되고 날짜가 2014-11-22로 변경됩니다.

내 검색 쿼리는 2014-11-23이고 예상 결과는 모두 5 개 레코드이지만 3 개만 가져옵니다. 2014-11-22로 변환되기 때문에 다른 2 개는 가져 오지 않습니다.

2014-11-23을 입력하여 5 개의 레코드를 모두 얻는 방법은 무엇입니까? 도와주세요.

이스마엘 아 브루

datetime을 저장하면 시간대와 시간에 대한 beginning_of_dayend_of_day메서드를 사용하여 해당 쿼리에 사용할 수 있습니다.

date = Time.parse('Wed, 19 Nov 2014 19:23:59 UTC +00:00')
# => 2014-11-19 19:23:59 UTC
d = date.in_time_zone('Paris')
# => Wed, 19 Nov 2014 20:23:59 CET +01:00


User.where(created_at: (d.beginning_of_day..d.end_of_day)).count
#   (46.5ms)  SELECT COUNT(*) FROM "users"  WHERE ("users"."created_at" BETWEEN '2014-11-18 23:00:00.000000' AND '2014-11-19 22:59:59.999999')

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관