2012-02-14 11 views
0

나는 두 날짜 사이의 모든 날짜를 선택하려고합니다. 내 date_ini 및 date_final 변수는 날짜 형식 (00-00-00 0시 0분 0초) 그것은 간단한 반환 널 (null)날짜 사이에 쿼리 선택 유닉스 타임 스탬프 및 날짜 형식

$msgs = mysql_query("SELECT date_time, from_user_name, message 
         FROM message_log 
         WHERE date_time BETWEEN '$log_ini' AND '$log_fim' 
         AND (from_user_name = '$usuario' OR from_user_name = '$atendente')")or die(mysql_error()); 

에있는 동안 데이터베이스에서 나는 유닉스 타임 스탬프 형식으로 기록을 가지고있다. select와 일치하는 레코드가있을 것입니다. date_default_timezone_set도 확인하고 서버와 동일한 시간대로 설정했습니다. 나는 이것이 바보 같은 것이라는 것을 알고있다. 그러나 나는 정말로 좌절하고있다! 그것은 내가 FROM_UNIXTIME 함수, ​​coman, coman, <> 연산자를 사용하여, 변수에 strotime을 시도하고 아무 것도 작동하지 않는 시간이었습니다 ... 누군가가 실수를 지적 할 수 있습니까? 고마워요!

편집 :

나는이 문제를 가지고, 정말 사실 위해 UnixTimeStamp되지 않습니다 DATE_TIME의 fiels는하지만 유닉스 시간 + 3 자리. 미안하지만, 내 실수 였고 대답은 좋았어. 나는이 양식에서이 사자를 다루는 법을 지금 발견하는 또 다른 질문을 열어두고있다. 고마워요!

+0

'$ log_ini '와'$ log_fim'에 어떤 값이 들어 있는지 쿼리를 출력 해 보았습니까? –

+0

mysql 터미널에서 쿼리를 실행 해보십시오. 그런 다음 "경고 표시"를 실행하십시오 – thetaiko

+0

쿼리에 주입하는 변수의 출처는 어디입니까? 사용자가 입력했는데 유효성이 확인되거나 이스케이프 처리되지 않은 경우 SQL 주입 공격을받을 위험이 있습니다. 준비된 구문 (mysqli 또는 PDO로 전환하는 것을 의미) – GordonM

답변

1

네, date_time 필드는 unix_timestamp입니까? 그건 그냥 정수이고, MySQL은 '사이에'연산을하도록 강요합니다 - MySQL은 기본 "unix timestamp"형식을 가지고 있지 않습니다. 정수로 변환하는 편리한 함수입니다 < -> datetime

절을 사용하려면

WHERE FROM_UNIXTIME(date_time) BETWEEN '...' AND '...' 
... or ... 
WHERE date_time BETWEEN UNIX_TIMESTAMP(...) AND UNIX_TIMESTAMP(...) 

이 필요합니다. 따라서 사과를 사과와 제대로 비교하고 사과와 오렌지를 적절하게 비교할 수 있습니다.

+0

안녕 마크 BI BI는이 2 제안을 다시 tryied, 나는 그들을 시도했습니다 또한 오늘 오후에도 결과는 항상 null입니다.>; ( 내가 알아 차리는 한 가지 사실은 내가 당신의 예제 에서처럼 하나의 coman을 꺼내면 SQL 오류로 실행됩니다. – Adry

+0

예, '2012-02-14 00:00:00 '은 수학 연산이고 유효한 SQL 구문이 아닌 콜론으로 구분 된 일부 0입니다. –

+0

괜찮습니까? 알아보기 만하는 주석! :) – Adry

관련 문제