2012-11-25 2 views
0

시작일과 종료일 사이의 날짜가 오늘과 열흘 사이 인 데이터를 검색하고 싶습니다. 난 레일에서하고 있습니다. 하지만 비록 내가 MySQL에서 내가 레일 활성 레코드로 변환 할 수있는 쿼리를 얻을. 이와 같은시작일과 종료일 사이의 날짜가 오늘과 10 일 이후의 날짜 사이에있는 레일이나 SQL에서 검색하십시오.

예시 :

select * from users where(between users.from and users.to = between '2012-11-25 11:52:33' and '2012-12-05 11:52:33') 

답변

1

간격 (a, b)과 중첩 (c, d) 상기 < D IFF와 b> C. 또한 curdate() 함수는 현재 날짜 ("today")를 반환합니다. 미래 10 일을 계산하려면 + interval 10 day을 사용할 수 있습니다. 이러한 정보 비트를 결합

당신이 얻을 :

select ... where users.to > curdate() 
and users.from < curdate() + interval 10 day 
+0

여기에서하려는 것을 자세히 설명해 주실 수 있습니까? –

+0

Soory 그러나 내 시작 날짜가 오늘 이전이고 종료 날짜가 11 일 후에 끝나는 경우에는 작동하지 않습니다. –

+0

질문을 다시 말하십시오. 시작 날짜가 오늘보다 작고 종료 날짜가 11 일 후에 끝나면 시작일과 종료일은 오늘과 10 일 사이에 아닌지 묻습니다. – Joni

0

follwing을하지만 논리 조각이 아닌 정확한 코드입니다. 시도해보십시오.

당신이 더 나을 수 있습니다 추측

select * from users 
where users.fromDate between '2012-11-25 11:52:33' and '2012-12-05 11:52:33' 
and users.toDate between '2012-11-25 11:52:33' and '2012-12-05 11:52:33'; 

* SQLFIDDLE뿐만 아니라

귀하의 질문 다른 표현 PER AS

편집에 다음 예제 코드를 확인 ..

where users.from between users.from and users.from + interval 10day 
and users.to <= user.from + interval 10 day 

그 의미는 귀하의 from date은 무엇이든 가능합니다 (오늘, 어제, 1 개월 전, 2 년 후 ... ...). 따라서 귀하의 to-date은 위의 from-date

는 의미가 희망에서 10 일 간격으로 어떤 일에 대해 검증 할 것입니다 ... 그러나 다시, 조니의 대답은 오늘날의 consition에 대한 채 웁니다. :)

+0

Joni의 코드가 더 아름답습니다. 더 나은 성능을 위해 효율적인 명령을 사용하여 눈치 챘습니다. 10 일 간격으로 현재 날짜 (예 : 오늘) 이내에 시작/종료 날짜를 알려줍니다. 내 것이 당신이 원하는 정교한 기본보기입니다.) – bonCodigo

+0

오늘 시작일이 오늘이고 종료일이 11 일 후에 끝나면이 조건은 실패합니다. –

+0

확실히 동적 인 것은 아닙니다. 그게 내가 조니의 코드가 아름답고 효율적이라고 말한 이유 다. :) – bonCodigo

관련 문제