How to query posts by month based on date custom field?

It is not clear what you’re using as a comparison, but WP Query supports meta query comparisons and even has a DATE type.

For example:

    $query = new WP_Query( array( 
                       'post_type' => 'attraction',
                       'meta_key' => 'attraction_date', 
                       'meta_value' => '10', 
                       'meta_compare' => 'LIKE', 
                       'type' => 'DATE' ) );

Using 10 is not going to get you very far, you should use a timestamp.

I have not tested the date parameter in WP QUERY, it should be using/converting all dates to a unix timestamp using strtotime, if not I would suggest doing so.

http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters
http://php.net/manual/en/function.strtotime.php