web-dev-qa-db-fra.com

Meta Query avec la date et l'heure le même jour avant l'heure donnée

J'ai un metaquery pour un type de message personnalisé "événements". Leur date de début est stockée en tant que méta-champ dans ce format:

2016-02-05 19:00:00

Voici mes arguments de requête:

$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
    )
);

Le problème: la date et l'heure actuelles sont: 2016-02-05 12:29:16

Cette requête doit renvoyer la publication avec cette méta-valeur: 2016-02-05 19:00:00

Hier (un jour avant cette date) cela a fonctionné. Aujourd'hui ce n'est pas le cas. Moyens: Si le jour est le même mais que l'heure et la minute sont plus grandes qu'aujourd'hui, cela ne fonctionne pas comme il se doit. Il semble que l'heure, la minute et la seconde soient ignorées. Je suppose que le problème est dû au fait que j'ai mélangé l'heure et la date.

Est-ce exact? À quoi devrait ressembler la requête, que cela fonctionne?

Merci beaucoup

1
user998163

Trouvé l'erreur:

$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
        )
    );

Il doit être DATETIME au lieu de DATE comme type de comparaison.

0
user998163