web-dev-qa-db-ja.com

meta_queryの日付と時刻の比較

2つのカスタムmeta_keysの値に対して投稿をクエリしようとしています...

'_mdjm_event_date'はY-M-D(2015-05-13)、 '_mdjm_event_finish'はH:i:s(23:35:00)

これが私の質問です...

$args = array(
                    'posts_per_page'    => -1,
                    'post_type'      => MDJM_EVENT_POSTS,
                    'post_status'      => 'mdjm-approved',
                    'meta_key'        => '_mdjm_event_date',
                    'meta_value'        => date( 'Y-m-d' ),
                    'meta_compare'    => '<=',
                    'meta_type'      => 'date',
                    'meta_query'        => array(
                                            'relation'  => 'AND',
                                                array(
                                                    'key'       => '_mdjm_event_finish',
                                                    'value'   => date( 'H:i:s' ),
                                                    'compare'   => '>',
                                                    'type'     => 'numeric',
                                                ),
                                            ),
                    );

私が返そうとしているのは、今日以前のイベントの日付を持つすべての投稿です。イベントの日付が今日の場合、終了時刻は現在の時刻より短くなければなりませんが、上記のコードでは望ましい結果が得られません。基準を満たすイベントは8つありますが、返されるイベントは2つだけです。

どんな助けにも感謝

ありがとう

1
Mike

古いメタ構文と新しいメタ構文を混同しています。読みやすさと将来の互換性のためにこれをクリーンアップすることをお勧めします。 (WordPressは混合クエリを正しく解析しているようですが)

$args = array(
  'posts_per_page'    => -1,
  'post_type'         => MDJM_EVENT_POSTS,
  'post_status'       => 'mdjm-approved',
  'meta_query'        => array(
    'relation'  => 'AND',
    array(
        'key'       => '_mdjm_event_date',
        'value'     => date( 'H:i:s' ),
        'compare'   => '<=',
    ),
    array(
        'key'       => '_mdjm_event_finish',
        'value'     => date( 'H:i:s' ),
        'compare'   => '>'
    ),
  ),
);

もう1つ変更したのは、日付値の数値への型キャストです。私はそれがあなたの質問をつまずかせたことを確信しています。 MySQLコンソール(PHPAdmin、コマンドラインなど)でSELECT CAST('23:20:36' as signed)を実行した場合は、 "23"が返されることがわかります。それは一致しないでしょう。

2
s_ha_dum