앞으로 2 주 동안 모든 사용자를 생일로 찾으려고합니다. DOB의 '년'올해 동일하지 않기 때문에 분명히 작동하지 않습니다일년 내내 레일스로 날짜를 비교하려면 어떻게합니까?
User.find(:all, :conditions => ["DOB > ? and DOB <= ?", Date.today, 2.weeks.from_now])
:
나는 다음 시도했다.월과 일만 비교하면됩니다.
어떻게해야합니까?
앞으로 2 주 동안 모든 사용자를 생일로 찾으려고합니다. DOB의 '년'올해 동일하지 않기 때문에 분명히 작동하지 않습니다일년 내내 레일스로 날짜를 비교하려면 어떻게합니까?
User.find(:all, :conditions => ["DOB > ? and DOB <= ?", Date.today, 2.weeks.from_now])
:
나는 다음 시도했다.월과 일만 비교하면됩니다.
어떻게해야합니까?
살릴의 대답을 바탕으로, 나는 sqlite에서 작동하도록 다음을 유도했습니다.
arr = []
(0..14).each { |i| arr << (Date.today + i.day).yday }
@users = User.find(:all, :conditions => ["cast(strftime('%j', DOB) AS int) in (?)", arr])
이것은 비교를 위해 날짜 형식을 변경하는 데 도움이 될 수 있습니다. 기본적으로 Date.today.year가 적용됩니다.
Date.strptime("{ #{DOB.month}, #{DOB.date} }", "{ %m, %d }").
Date.strptime는 ("{9, 10}", "{%의 m은, % D는}")를 직접 비교를 위해 몇 가지 코드를 얻는 경우에 게시 마십시오
<Date: 2011-09-10 (4911629/2,0,2299161)>
을 제공합니다.
당신은
뭔가 당신이 루비
에서 MySQL의 기능에을 this을 넘기기 위해
SELECT FROM users
WHERE DAYOFYEAR(dob)in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
당신은 작동 중 WEEK 같은 기능을 사용할 수 있습니다 다음과 같이 당신의 DOB 열을 MySQL의 방법을 수행해야
arr=[]
(0..13).each{|i| arr << (Date.today+i.day).day }
User.find(:all, :conditions => ["DAYOFYEAR(DOB) in (?)", arr])
동일한 작업을 수행 할 SQL 방법이 있습니까? 내 조건에 루비 코드를 붙일 수 없기 때문에 –