web-dev-qa-db-fra.com

Requête de date non inclusive malgré la valeur true du paramètre

J'ai mis en place une petite requête test pour obtenir certaines publications du 1er au 10 octobre. J'ai publié une publication aujourd'hui (10 octobre) et avec le paramètre de requête de date de include défini sur true, je m'attendais à ce que cette publication apparaisse. dans les résultats de la requête. Cependant, ce n'est pas le cas.

Si je modifie la date de publication de l'article au 1er octobre, elle apparaît dans les résultats. Bien que si je change inclusive en faux, il apparaît toujours. En gros, inclusive ne semble rien faire .

Si inclusive n’est pas la solution, existe-t-il un autre moyen de s’assurer que tous les messages du 1er au 10 octobre , y compris , du 1er au 10 octobre?

$args = array( 
    'date_query' => array(
                array(
                    'after' => '2014-10-01',  
                    'before' => '2014-10-10',
                    'inclusive' => true  
                ),

            )
    );

$posts = get_posts($args);
if( $posts ) { 
    foreach ($posts as $p) {
        echo $p->post_title . ' on ' . $post->post_date . '<Br>';
    } 
} else {
    echo 'no posts';
}

Edité pour ajouter que je viens de vider la requête de date SQL et la clause where est

"AND ((post_date> = '2014-10-01 00:00:00' ET post_date <= '2014-10-10 00:00:00'))"

Donc, ce n'est pas vraiment inclusif du tout la journée. Filtrer la valeur en

"AND ((post_date> = '2014-10-01 00:00:00' ET post_date <= '2014-10-10 23:59:59'))"

inclut en fait les messages postés pendant la journée du 10 octobre.

1
helgatheviking

Si vous voulez seulement travailler avec les chaînes yyyy-mm-dd, par exemple '2014-10-10', vous pouvez faire quelque chose comme:

'before' => '2014-10-10 + 1 day - 1 second',

'before' => '2014-10-10 + 86399 seconds',

'before' => 'tomorrow 2014-10-10 - 1 second',

'before' => '2014-10-10 tomorrow - 1 second',

ou

il suffit d'ajouter '23:59:59' à votre chaîne yyyy-mm-dd

obtenir

'before' => '2014-10-10 23:59:59'
2
birgire