2012-04-16 4 views
0

안녕하세요. 오늘부터 모든 일정을 표시하려고합니다. 그 사용자 정의 필드는 postmeta 테이블에 저장됩니다. 날짜를 비교해보고 비교할 때 결과가 나타나지 않을 때 아무런 결과도 반환하지 않습니다. 올바른 날짜 형식과 일치합니다.Meta_query date issue

$today = date('d/m/Y',time()); 
$args = array(
'post_type' => 'live', 
'meta_query' => array(
        array(
       'key' => 'date', 
       'value' => $today, 
       'compare' => '>=', 
       'type' => 'DATE', 
) 
) 
); 

도움이 되었으면 감사하겠습니다.

감사

+0

사용자 정의 필드는 JQuery와 UI 달력을 사용하여 업데이트됩니다 . 날짜의 데이터베이스 항목은 동일한 형식 날짜 ('d/m/Y', 시간())입니다. – jamessy

+0

d/m/Y는 날짜를 비교할 수있는 좋은 선택이 아니므로, 당신은 Y/m/d – soju

답변

1

는 Y/m/d의 형식 (또는 Y-m-D ... 등)를 사용한다, 날짜를 비교할 수 있습니다합니다. 당신의 인수와

, SQL 쿼리는 다음과 같습니다 예를 18/03/2012 >= 17/04/2012를 들어, 잘못

SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) WHERE 1=1 AND wp_posts.post_type = 'live' AND (wp_posts.post_status = 'publish') AND ((wp_postmeta.meta_key = 'date' AND CAST(wp_postmeta.meta_value AS DATE) >= '17/04/2012')) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10 

이 참 ...

당신은 Y/m/d의 형식과 다음 인수를 사용하는 경우 :

$args = array(
    'post_type' => 'live', 
    'meta_query' => array(
     array(
      'key' => 'date', 
      'value' => date('Y/m/d',time()), 
      'compare' => '>=', 
     ) 
    ) 
); 
그것은 예상대로 작동합니다

:

SELECT SQL_CALC_FOUND_ROWS wp_posts.* FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) WHERE 1=1 AND wp_posts.post_type = 'live' AND (wp_posts.post_status = 'publish') AND ((wp_postmeta.meta_key = 'date' AND CAST(wp_postmeta.meta_value AS CHAR) >= '2012/04/17')) GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 10 
,536,913을 63,210

그래서 :

  • 당신은 데이터베이스
  • 에 날짜 값을 수정할 수 있습니다 또는 당신은 비교하기 전에이 값을 변환하는 자신의 쿼리를 구축 할 수는
+0

을 사용해야합니다. 죄송합니다. 저는 두 분 모두의 제안을 시도했지만 여전히 기쁨은 얻지 못했습니다. 난 그냥 마지막 워드 프레스 쿼리를 인쇄하고 그것도 비교하지 값처럼 SELECT SQL_CALC_FOUND_ROWS의 wp_posts 보인다. * wp_posts FROM WHERE 1 = 1 AND wp_posts.post_type = '라이브'AND (wp_posts.post_status = '게시'OR wp_posts. post_status = 'private') ORDER BY wp_posts.post_date DESC LIMIT 0, 10 – jamessy

+0

죄송합니다. meta_query는 배열 배열입니다. – soju