Re: Holiday Calculations?

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 19:01:05
Message-ID: 3BA8EB71.C82840C8@yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

I couldn't resist, so I went ahead and did all of them. I might be using
these in a future app anyways. Again these are Tcl procs, but you may be
able to transfer the logical to another language, if you want.


proc getTG {year} {

set di \
[clock format [clock scan $year-11-30] -format "%w"]

return [expr {30 - ((($di+1)%7)+2)}]

}

proc getMem {year} {

set di \
[clock format [clock scan $year-05-31] -format "%w"]

return [expr {31 - ((($di+6)%7))}]

}


proc getLabor {year} {

set di \
[clock format [clock scan $year-09-01] -format "%w"]

return [expr {(((8-$di)%7) + 1)}]

}

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

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Stephan Szabo 2001-09-19 19:36:04 Re: Creating a boolean function
Previous Message Miguel González 2001-09-19 18:55:49 Creating a boolean function