web-dev-qa-db-ja.com

与えられた時間の前の同じ日の日付と時間でのメタクエリ

カスタム投稿タイプ "events"用のメタクエリがあります。開始日は、次の形式でメタフィールドとして格納されています。

2016-02-05 19:00:00

これらは私のクエリ引数です:

$args = array(
    "posts_per_page" => 12,
    "paged" => $paged,
    "post_type" => array(
        "event",
        "post"
    ) ,
    "post_status" => "publish",
    "meta_key" => "_thumbnail_id",
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key' => 'event_start',
            'value' => date("Y-m-d H:i:s") ,
            'compare' => '>=',
            'type' => 'DATE'
        ) ,
        array(
            'key' => 'event_start',
            'compare' => 'NOT EXISTS'
        )
    ) ,
    array(
        'key' => 'foreign_language',
        'value' => 0
    ) ,
    array(
        'key' => 'hide_from_most_recent',
        'value' => 0
    )
);

問題:現在の日付と時刻は次のとおりです。2016-02-05 12:29:16

このクエリはこのメタ値で投稿を返すべきです:2016-02-05 19:00:00

昨日(この日の一日前)はうまくいきました。今日はそうではありません。手段:日が同じで、時と分が今よりも大きい場合は、正常に機能しません。時、分、秒は無視されているようです。私は問題が私が時間と日付を混同したという事実によって引き起こされると思います。

あれは正しいですか?クエリはどのように動作しますか。

どうもありがとう

1
user998163

エラーが見つかりました:

$args = array(
        "posts_per_page" => 12,
        "paged" => $paged,
        "post_type" => array(
            "event",
            "post"
        ) ,
        "post_status" => "publish",
        "meta_key" => "_thumbnail_id",
        'meta_query' => array(
            'relation' => 'OR',
            array(
                'key' => 'event_start',
                'value' => date("Y-m-d H:i:s") ,
                'compare' => '>=',
                'type' => 'DATETIME'
            ) ,
            array(
                'key' => 'event_start',
                'compare' => 'NOT EXISTS'
            )
        ) ,
        array(
            'key' => 'foreign_language',
            'value' => 0
        ) ,
        array(
            'key' => 'hide_from_most_recent',
            'value' => 0
        )
    );

型を比較す​​るため、DATETIMEではなくDATEである必要があります。

0
user998163