Re: Holiday Calculations?
От | Brett Schwarz |
---|---|
Тема | Re: Holiday Calculations? |
Дата | |
Msg-id | 3BA7E699.71974872@yahoo.com обсуждение исходный текст |
Ответ на | Holiday Calculations? ("Josh Berkus" <josh@agliodbs.com>) |
Список | 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@agliodbs.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@postgresql.org) _________________________________________________________ Do You Yahoo!? Get your free @yahoo.com address at http://mail.yahoo.com
В списке pgsql-sql по дате отправления: