2012-04-16 2 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

前にこれらの値を変換するために、独自のクエリを構築することができます。 dateのデータベースエントリは、同じ形式の日付( 'd/m/Y'、time())です。 – 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 
をだから、

  • あなたはデータベース
  • であなたの日付値を変更することができたり、カスタムフィールドはjqueryのUIのカレンダーを使用して更新される比較
+0

申し訳ありません申し訳ありません。私はちょうど最後のWordPressのクエリを印刷し、値を比較していないように見えます。 SELECT SQL_CALC_FOUND_ROWS wp_posts。* FROM wp_posts 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