2013-07-30 3 views
-2

사이에 있다면 나는 데이터베이스에서 날짜와 일부 datas를 얻을 찾을 수 YYYY-MM-DDPHP는 어떻게 날짜가 2 날짜

내가하고 싶습니다

if ($data['my_date'] >= 2009-01-01 && $data['my_date'] <= 2009-12-31) { 
    $datas = '5'; 
} 
else { 
    $datas = 1; 
} 

예상대로 작동하지 않는 상태가 확인되지 : PHP 발견 $ 경우 데이터에 대한 조건 [ 'my_date는'])을 추천 날짜 사이에있다. 어떻게해야합니까?

+1

당신은 당신의 날짜를 인용 할 필요가, 또는 다른 사람들이 정수 연산으로 해석되고있다 ('2009-01- 01 == 2007') –

+0

@ CarlosCampderrós 솔루션이기 때문에 답변을 게시해야합니다 ("귀하의 날짜를 인용해야합니다"). 나는이 실수를하기가 혼란 스럽다. –

+0

@ SébastienGicquel이 답변으로 게시되었습니다. 그리고 우리 모두는 과거에 어리석은 설명 할 수없는 실수를 저질렀습니다 ;-) –

답변

1

날짜에 대한 리터럴 구문은 없으므로 따옴표로 묶고 문자열로 처리해야합니다. YYYY-MM-DD 형식을 사용하는 경우 사전 순으로 정렬 할 수 있으며 현재 방법이 작동해야합니다.

if ($data['my_date'] >= '2009-01-01' && $data['my_date'] <= '2009-12-31') { 
    $datas = '5'; 
} 
else { 
    $datas = 1; 
} 

당신이 당신의 날짜를 인용하지 않는 경우, 당신이하고있는 정수 연산 :

$data['my_date'] >= 2009-01-01 ====> $data['my_date'] >= 2007 
1

strtotime()으로 모든 날짜를 타임 스탬프로 변환 한 다음 비교해야합니다.

strtotime($data['my_date']) >= strtotime('2009-01-01')... 
+0

모든 날짜가'YYYY-MM-DD' (알파벳 순/숫자 순으로 정렬 가능)이면'strtotime'을 호출 할 필요가 없습니다. –

+0

@ 카를로스 : 아무런 보장이 없다. 안전 측면이 더 좋다. –

+1

@RaheelHasan 감사합니다. 정말 쉽습니다. 전에 strtotime()으로 시도했지만 그 것이 작동하지 않았습니다. 'strtotime 날짜에' '2009-01-01') –

1

당신은 타임 스탬프로 날짜를 변환 strtotime() 또는 mktime()을 사용하고 비교합니다.