2011-08-09 2 views
1

내 SQL 문에서 두 intergers를 비교할 수 있는지 궁금 해서요. 하나의 날짜 필드가 unixtimestamp로 저장되어 있습니다. 날짜 필드가 두 값 사이에있는 레코드를 찾고 싶습니다. 이런 예시 : myNumber 루프 함수에서 변수intergers를 비교 mysql

Select ... From ... WHERE (dateField + myNumber) Between (x) And (y) 

.

이렇게 할 수 있나요?

편집 : myNumber 항상 DateField 구성 값

내가 뭘하려고 오전 미래의 어떤 시점에서 다시 일어나야 이벤트의 목록을 만드는 것입니다보다 큰 양수입니다. 테이블에 기록 된 이벤트 기록이 있습니다. 나중에 해당 이벤트가 다시 발생해야하는시기를 찾기 위해 쿼리를 실행합니다.

내가 논리 생각을 왜 2012 년

가 그이다, 나는 월에 다시 일어나야하는 10 개 개의 레코드의 목록을 만들 필요가 난 2011 년 3 월에 일어난 10 개 개의 레코드가 있다고 가정하자 : 2012 년 3 월 1 일] 및 [2012 년 3 월 31 일]

내 날짜가 유닉스 타임 스탬프로 저장되기 때문에 충분히 단순 해 보였습니다.

+0

보헤미안 잘 수정하지 않는 것입니다 필드에 인덱스가있을 수 있으며, 인덱스를 수정하면 인덱스가 사용되지 않습니다. – cristian

+1

귀하의 질문은 무엇입니까? 당신은 작동하는 SQL을 게시했습니다 (비록 보헤미안의 대답을 더 효율적으로 만드는 방법에 대한 답변을 볼 수 있습니다). 그래서 나는 당신의 문제를 보지 못했습니다. –

답변

3
나는 필드를 수정 아니라 범위의 값을 수정, 그래서 (있는 경우) 당신은 여전히 ​​인덱스를 사용할 수 없습니다 에 기울어 될 것

:

Select ... From ... WHERE dateField Between x - myNumber And y - myNumber 
+0

만약'myNumber'가 음수이면 문제가 될까요? – ajreal

+0

@ajureal - 물론입니다. 음수를 뺀 것은 시공간 연속체를 깨뜨릴 수 있습니다. –

+0

@ajreal : 아니요, 동등한 변환입니다. 알다시피, 그 고등학교 수학 수업은 그들의 목적을 가지고 있습니다. –