web-dev-qa-db-fra.com

Quel format le type TIME de méta_query requiert-il?

Selon le titre - quel format le type TIME dans une méta_query nécessite-t-il?

J'ai quelques champs personnalisés, date et time - le but est d'afficher les posts dated aujourd'hui et à l'avenir jusqu'à l'heure précédant time.

'meta_query' => array(
    'relation' => 'AND',
    array(
        'key'       => 'date',
        'value'     => date('Y-m-d',strtotime("today")),
        'compare'   => '>=',
        'type'      => 'DATE'
    ),
    array(
        'key'       => 'time',
        'value'     => date('H:i', strtotime("now -1 hour")),
        'compare'   => '<=',
        'type'      => 'TIME'
    )
)

La partie date de la requête fonctionne bien, mais pas la requête time - je soupçonne quelque chose à voir avec le format.

1
mistertaylor

Le format de date et d’heure meta_query requiert le même format que celui utilisé pour stocker les données des champs méta . Parfois, différents formats peuvent être comparés directement, mais la plupart du temps ils ne le sont pas. Un format recommandé à utiliser est le format MySQL:

  • format de date: AAAA-MM-JJ (pour PHP fonctions de date: Y-m-d)
  • format de l'heure: HH: MM: SS (pour PHP fonctions de date: H: i: s)
  • date-heure: AAAA-MM-JJ HH: MM: SS (pour PHP fonctions de date: Y-m-j H: i: s)

Un autre format recommandé est l’horodatage UNIX; les deux peuvent être utilisés directement dans les requêtes de base de données avec des conditions de tri et de comparaison, mais si vous utilisez les formats MySQL, vous pouvez également reconnaître visuellement la date et l'heure.

De plus, vous devez noter que dans meta_query ( , citant du codex ):

Le 'type' DATE ne fonctionne avec la valeur de comparaison 'BETWEEN' que si la date est stockée au format AAAA-MM-JJ et testée avec ce format.

Vous devez donc stocker les dates au format AAAA-MM-JJ si vous souhaitez définir l'argument type à DATE.

3
cybmeta