I got posts that have starting date as a custom field value. I'm displaying few of those posts in my sidebar in ascending order so that the post with closest starting date is shown first. This is what I have and it works great: <?php query_posts('&post_type=events&posts_per_page=5&meta_key=start_date&orderby=meta_value&order=asc'); ?><?php while ( have_posts() ) : the_post(); ?><li><span class="eventtext"><?php the_title(); ?></span> <?php $display_date = date_i18n('j F, Y', strtotime(get_post_meta(get_the_ID(), 'start_date', true))); ?> But I was wondering, how could I filter the query so that it won't display posts with their starting dates already gone? I've experimented with this: $today = date('d/m/Y', strtotime('+2 hours')); query_posts(array( 'post_type' => 'events', 'posts_per_page' => 5, 'meta_key' => 'start_date', 'orderby' => 'meta_value', 'order' => 'ASC', 'meta_query' => array( array( 'key' => 'start_date', 'meta-value' => $value, 'value' => 'start_date', 'compare' => '>=', 'type' => 'CHAR' ) ) )); But it doesen't display anything. One thing to note is that the starting date value is saved in mm/dd/yyy -format, but changing the $today's date format haven't helped either.