title: Postgres: Is Date between now and interval for EVERY birthday
body: <p>I want to be able to return Users who have a birthday between now and a specified time interval.</p>
  
  <p><strong>User Model</strong></p>
  
  <ul>
  <li>name (string)</li>
  <li>birthday (date)</li>
  </ul>
  
  <p><strong>My Time Interval</strong> = 30 days </p>
  
  <p><strong>My Data Set</strong> </p>
  
  <pre><code>|---------------------|------------------|------------------|
  |      id             |     name         |     birthday     |
  |---------------------|------------------|------------------|
  |          1          |        Tim       |   27/06/1994     |
  |---------------------|------------------|------------------|
  </code></pre>
  
  <p><strong>My Attempt</strong></p>
  
  <pre><code>SELECT * FROM User where User.birthday BETWEEN NOW()::timestamp AND to_char(NOW() + interval '30 days','MM-DD')::timestamp;
  </code></pre>
  
  <p><strong>Returns</strong></p>
  
  <p>Empty. Postgres is assuming that by omitting the year I actually mean year 1.</p>
  
  <p><strong>What I want</strong></p>
  
  <p>This query to return all users whose birthday resides in the interval regardless of the year.</p>
  
  <p><strong>Attempt From Answers (Many thanks @Mureinik)</strong></p>
  
  <pre><code>SELECT *
  FROM   user
  WHERE  birthday BETWEEN TO_CHAR(NOW(), 'MM-DD') AND
  TO_CHAR(NOW() + INTERVAL '30 days','MM-DD')
  </code></pre>
  
  <p><strong>Issues with this answer</strong></p>
  
  <ul>
  <li>This will not work if 30 days from now is next year.</li>
  <li>If the year is a leap year, will this interval not need to be 31 days?</li>
  </ul>