2011-02-24 8 views
0

타임 스탬프 필드를 사용하여 항목이 삽입 된 시간을 추적하는 MySql 데이터베이스가 있습니다.PHP의 날짜 범위에 대한 MySql 쿼리

이제 날짜 범위별로 항목에 대한 테이블을 쿼리하고 싶습니다.

필자는 모든 레코드를 추출하는 대신 MySql을 사용하여 PHP의 날짜를 비교하고 반복하는 것을 선호합니다.

그래서 시작일과 종료일이 있습니다. YYYY-MM-DD :

// this doesn't appear to be working 
SELECT COUNT(*) FROM table_name 
WHERE DATE(timestamp_row) BETWEEN '{$date1}' AND '{$date2}; 

// this doesn't appear to be working either 
SELECT COUNT(*) FROM table_name 
WHERE DATE(timestamp_row) >= {$date1} 
AND DATE(timestamp_row) <= {$date2}; 

MySQL의 DATE() 함수는이 형식으로 타임 스탬프를 켜지는지가 나타납니다 : 나는 쿼리의 이러한 이가지에 성공하지 YYYYMMDD 및 YYYY-MM-DD 형식을 시도했다

이렇게하는 방법이 있습니까?

+2

작은 따옴표로 묶인 YYYY-MM-DD 문자열을 제공 한 경우 원하는대로 쿼리가 작동합니다. 여기 내가 볼 수없는 뭔가가 잘못되었습니다. 'timestamp_row'는 TIMESTAMP/DATETIME/DATE 타입 컬럼이 아닙니까? –

+1

'{$ date1} '대신 실제 날짜 값으로 시도 했습니까? – sdleihssirhc

+0

@dan timestanp_row는 mysql 유형의 타임 스탬프입니다. 정적 번호를 사용하여 작동하는지 확인해 볼 것입니다 .. – OneNerd

답변

0

어떤 필드 유형을 사용하고 있습니까? 1. DATETIME, TABLE_NAME FROM 2. DATE, SELECT COUNT (*) 이후 3. TIMESTAMP

WHERE 날짜 2 $ {} "와"날짜 1 $ {} BETWEEN DATE (timestamp_row); '{$ date1}'및 '{$ date2}'대신 특정 값을 사용하면 괜찮습니다. 어쩌면 시간이 귀하의 행에 형식화 된 방식에 문제가 있습니까?

자동으로이 같은 유효한 동등한 잘못된 날짜를 변환 할 수 있습니다

SELECT '2008년 2월 31일'+ 간격 0 DAY;

2008년 3월 2일

0

당신은 원래 검색어의 MySQL의 날짜 기능을 사용할 필요가 없습니다이

SELECT COUNT(*) FROM table_name WHERE timestamp_row BETWEEN '2011-01-01 00:00:00' AND '2011-01-31 23:59:59'; 

을 시도 할 수 있습니다.

0

당신은 ...이이

select id from my_table 
where 
timestamp < date_format(date_add(CURRENT_TIMESTAMP(), interval 1 day), 
      '%Y%m%d000000') AND timestamp >= date_format(CURRENT_TIMESTAMP(), 
      '%Y%m%d000000') 
0

isearch 기능 ID로 데이터하지만 날짜가 잘못된 형식과 날짜의 선택의 트릭을 할 것, 따라서 희망하는 사용자의 B'Day 날짜를하고있다 show 1970/01/01

       $book_year= Date("Y", strtotime($year)); 
      $book_month= Date("m", strtotime($month)); 
      $book_day=Date("d", strtotime($day)); 
      $book_date=$year."/". $month."/". $day; 
        $book_date= Date("Y-m-d", strtotime($book_date));