From: | Brett Schwarz <brett_schwarz(at)yahoo(dot)com> |
---|---|
To: | Josh Berkus <josh(at)agliodbs(dot)com> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Holiday Calculations? |
Date: | 2001-09-19 00:28:09 |
Message-ID: | 3BA7E699.71974872@yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Based on your criteria (I never really had thought about Thanksgiving
before, as far as when it hits), but here is a small Tcl proc that I
think will do it. You may need to add error checking. Takes the year
(i.e. 2001), and returns the day date (i.e. 22).
-------------------------------------------
proc getTG {year} {
set di \
[clock format [clock scan $year-11-30] -format "%w"]
return [expr {30 - ((($di+1)%7)+2)}]
}
---------------------------------------------
I think this will do it (It might not work for esoteric cases...I didn't
check all). Sorry, I don't know SQL well enough to give an answer in
SQL...maybe someone else will though...or maybe you can extrapolate this
proc into SQL.
I think you may be able to modify this for Memorial and Labor day as
well.
--brett
Josh Berkus wrote:
>
> Folks,
>
> I'm spec'ing a calendar app for PostgreSQL, and was wondering if anyone
> had already solved the following problem:
>
> How can I calculate the dates of American holidays?
>
> Obviously, Christmas & New Year's are easy. As is July 4.
>
> However, Thanksgiving is the last Thursday in November, unless the month
> ends on a Thursday or Friday, in which case it is the next-to-last.
> Memorial Day and Labor Day are simpler, but also use the "First or Last
> Monday in x month" idea.
>
> I was wondering if anyone had already figured out these calculations, in
> any language (SQL would be terrific).
>
> Thanks!
>
> -Josh
>
> ______AGLIO DATABASE SOLUTIONS___________________________
> Josh Berkus
> Complete information technology josh(at)agliodbs(dot)com
> and data management solutions (415) 565-7293
> for law firms, small businesses fax 621-2533
> and non-profit organizations. San Francisco
>
> ------------------------------------------------------------------------
> Name:
> Type: Plain Text (text/plain)
> Encoding: base64
>
> Name:
> Type: Plain Text (text/plain)
> Encoding: base64
>
> Name:
> Type: Plain Text (text/plain)
> Encoding: base64
>
> ------------------------------------------------------------------------
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
> (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com
From | Date | Subject | |
---|---|---|---|
Next Message | Peter | 2001-09-19 00:50:33 | PHP session issue |
Previous Message | Tom Lane | 2001-09-18 23:26:16 | Re: Out of free buffers... HELP! |