2012-06-04 4 views
0

dateTime으로 데이터를 검색하도록 코딩하고 있습니다. 웹 양식에서 사용자 입력 값 2012-06-04$_REQUEST['dateSearch']에 저장됩니다. mySQL의 기본 datetime 형식

$dateObj = date_create_from_format("Y-m-d",$_REQUEST['dateSearch']); 
$dateParam = $dateObj->format("Y-m"); 

은 그 때 나는
$sql = " 
    SELECT * 
    FROM `temp` as `t` 
    WHERE `t`.`date` LIKE '$dateParam%' 
"; 

모든 것이 괜찮 데이터

을 찾기 위해 SQL 쿼리에 $dateParam를 사용하지만 MySQL은 항상 곁에 하나의 dateTime 형식 Y-m-d H:i:s을 사용하여 확실하지 않다 : 그에서 dateTime 개체를 만듭니다. 여기에서 $dateParam = $dateObj->format("Y-m"); 기본 형식을 "Y-m"으로 설정했습니다. 기본 형식이 변경되지 않습니까? 하드 코드 형식으로 설정하려면 Y-m-d H:i:s 대신 코드를 사용하는 것이 좋다고 생각합니다. 어떻게하면 dateTime 기본값 문자열을 mySQL에서 얻을 수 있습니까 ???

+1

는 텍스트 값을 비교하여 검색하기 때문에 BTW, ''$ dateParam %의 'LIKE'매우 비효율적 인 검색 방법입니다. MySQL이 원래의 날짜 형식을 사용할 수 있기 때문에'THE YEAR (date) = 2012 AND MONTH (date) = 6'이 더 성능이 좋을 것입니다. – deceze

답변

4

당신은 오해, Y-m-d H:i:s
형식 날짜 에 대한 데이터 형식입니다. 당신이

같은 MySQL의에서 date_format 기능을 사용할 수 있습니다
datetime

이 MySQL의에서 날짜에 대한 반환 형식을 변경하기로 왜 이름이있어

Y-m-d = date 
H:i:s = time 

,

date_format('%Y-%m') = 2012-06 
+0

고마워요! DATE_FORMAT()에 의해 우리의 규칙에 따라 mySQL을 강제 실행해야한다는 것을 알고 있습니다. 감사. – Davuz

+0

MySQL에서 기본 datetime 형식을 'Y/m/d H : i : s'로 설정하려면 어떻게해야합니까? 가능한가? –

+0

무엇을 하시겠습니까? 데이터 형식은 데이터를 사용하는 사용자 인터페이스에서 수행해야합니다. – ajreal

0

아래에서 더 잘 사용하십시오!

select * from users where month(`t`.`date`)='12' and year(`t`.`date`)='2010' 

REF : MySQL query for month year