Re: Fwd: Date math - Mailing list pgsql-general

From Adam Rich
Subject Re: Fwd: Date math
Date
Msg-id 4A46F135.9070606@sbcglobal.net
Whole thread Raw
In response to Fwd: Date math  (Guy Flaherty <naoshika@gmail.com>)
Responses Re: Fwd: Date math
List pgsql-general
Guy Flaherty wrote:
> On Sun, Jun 28, 2009 at 1:52 PM, Adam Rich <adam.r@sbcglobal.net
> <mailto:adam.r@sbcglobal.net>> wrote:
>
>     Hello,
>     I have a table with a DATE field "birth_date".  The data obviously
>     contains various dates in the past, such as 07/04/1970.  In my
>     query, I need to retrieve the person's "next" birthday.  In other
>     words, for the example date 07/04/1970, the query should return
>     07/04/2009 for the current week, but after this July 4th, it would
>     return 07/04/2010. Ultimately, I need to find people with "next"
>     birthdays within a certain range.
>
>
>
> You could use the extract() function to calculate the day of year of the
> person's birthdate and then check if this number is within today's day
> of year and range of days you want to check for, for example, today's
> day of year + 30 days to be within a month. That way you don't need to
> worry about years at all. You may need to double check this will work on
> the leap years though!
>
>

Thanks! that's even better than what I just came up with:

birth_date + ((interval '1 year') * ceil(EXTRACT(DAYS FROM (now() -
birth_date))/365.25))

And I like the "Day of year" solution because (I think) I can use a
functional index on that value.


pgsql-general by date:

Previous
From: Guy Flaherty
Date:
Subject: Fwd: Date math
Next
From: Justin
Date:
Subject: Re: Fwd: Date math