Problem mit dem Datumsvergleich für benutzerdefinierte Felder

Diese Frage folgt auf: https://wordpress.stackexchange.com/questions/11390/can-you-do-a-date-comparison-on-a-custom-field-and-query-zwei- oder-mehr- Zolltaxo

und eine ähnliche Sache hier: https://stackoverflow.com/questions/7080352/multiple-custom-fields-stored-as-meta-keys-how-to-connect-with-the-post/

Ich versuche, ein Start-und Enddatum zu vergleichen, die benutzerdefinierte Felder in einem Post-Typ von Ausstellungen sind, die mit einer jquery Datumsauswahl mit dateFormat eingerichtet wurde: ‘TT-MM-JJ’

$today = date('Ym-d', strtotime('-6 hours')); $args = array( 'showposts' => 1, 'orderby' => rand, 'post_type' => 'exhibition', 'meta_query' => array( relation' => 'AND', array( 'key' => 'startDate', 'type' => 'CHAR', 'value' => $today, 'compare' => '>=' ), array( 'key' => 'endDate', 'type' => 'CHAR', 'value' => $today, 'compare' => '<=' ), ) ); 

Was ich nicht verstehe ist, wie dies in den Metadaten gespeichert wird – vermutlich wird es den Typ CHAR geben und warum meine Abfrage nicht richtig zu funktionieren scheint

Solutions Collecting From Web of "Problem mit dem Datumsvergleich für benutzerdefinierte Felder"

Dies:

 date( 'Ym-d', strtotime('-6 hours') ); 

Wird etwas wie 2011-11-11

Wenn Ihre Datumsauswahl das Format dd-mm-yy , wird das Vergleichen der beiden nicht funktionieren. meta_value , wenn es ist, was in dem Feld bei Post speichern / aktualisieren ist, wird was als meta_value .

Der Meta-Wert wird wahrscheinlich als String gespeichert, was gut ist – Sie können immer noch Datumsvergleiche durchführen, aber die Formate müssen übereinstimmen. Es gibt einige Möglichkeiten, dies zu lösen:

  1. Konvertiere deine Daten in Unix-Zeitstempel, bevor du sie in der database speicherst – benutze strtotimestrtotime das Umgekehrte am Frontend durch: date( 'F, j Y', $some_time_saved_in_db ); um die Daten den Benutzern anzuzeigen. Der Vergleich von Zeitstempeln sollte am zuverlässigsten sein.
  2. Speichern Sie Ihr Feld mit dem ISO-Standard-Datumsformat YYYYMMDD , das sich zum Vergleichen / Sortieren von Datumsangaben eignet.