DateDiff ohne Sonn- und Feiertage

DateDiff ohne Sonn- und Feiertage

am 04.01.2008 08:37:45 von Rene Weiss

Hallo,

an diesem Thema sitze ich schon einige Wochen
erfolglos.

Ich möchte die Differenz zweier Tage ohne Sonn-
und Feiertage errechnen.
Das beste, was ich im Netz fand, waren Hinweise
darauf, daß man eine
Tabelle sämtlicher Tage erstellen möge. Dort könne
man ein Flag setzen,
ob der Tag mitzählt oder nicht.
Ach ja, da bei jeder Abfrage ca. 10-100.000
Datensätze ausgewertet werden, darf die Berechnung
natürlich nicht zu "umfangreich" sein.

Als Feiertage bezeichne ich nur bundesweit
einheitliche Tage wie 1.5. oder
25+26.12 usw.

Hat das schonmal jemand gelöst? Ich komme leider
keinen Schritt weiter :-(

Re: DateDiff ohne Sonn- und Feiertage

am 04.01.2008 12:27:49 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: DateDiff ohne Sonn- und Feiertage

am 04.01.2008 17:38:36 von dnoeth

Rene Weiss wrote:

> Ich möchte die Differenz zweier Tage ohne Sonn-
> und Feiertage errechnen.
> Das beste, was ich im Netz fand, waren Hinweise
> darauf, daß man eine
> Tabelle sämtlicher Tage erstellen möge. Dort könne
> man ein Flag setzen,
> ob der Tag mitzählt oder nicht.

Das ist nah dran...

> Ach ja, da bei jeder Abfrage ca. 10-100.000
> Datensätze ausgewertet werden, darf die Berechnung
> natürlich nicht zu "umfangreich" sein.
>
> Als Feiertage bezeichne ich nur bundesweit
> einheitliche Tage wie 1.5. oder
> 25+26.12 usw.

Da die Differenz zwischen zwei beliebigen Datumswerten immer gleich
bleibt, ist es blanker Unsinn, das immer neu zu berechnen:
Du erweiterst einfach deinen Kalender (den du hoffentlich sowieso schon
hast, oder berechnest du etwa Ostern und Konsorten mit SQL?) um eine
Spalte, die du einmalig mit einer fortlaufenden Zahl füllst.
Für jeden Werktag wird um eins hochgezählt, nur beim Feiertag bleibt die
Zahl konstant. Für die Berechnung kannst du o.g. Flag nehmen oder du
bastelst dir das mit einem Spreadsheet.
Dann brauchst du nur zwei Joins mit Anfangs- und Enddatum und die
Differenz zwischen diesen beiden Werten zu bilden.

Dieter

Re: DateDiff ohne Sonn- und Feiertage

am 04.01.2008 17:48:15 von Andreas Kretschmer

Andreas
--
q: why do so many people take an instant dislike to mysql?
a: it saves time (oicu in #postgresql)
Explaining the concept of referential integrity to a mysql user is like
explaining condoms to a catholic (Shadda in #postgresql)

Re: DateDiff ohne Sonn- und Feiertage

am 04.01.2008 18:38:34 von dnoeth

Andreas Kretschmer wrote:

>> Du erweiterst einfach deinen Kalender (den du hoffentlich sowieso schon
>> hast, oder berechnest du etwa Ostern und Konsorten mit SQL?) um eine
>> Spalte, die du einmalig mit einer fortlaufenden Zahl füllst.
>> Für jeden Werktag wird um eins hochgezählt, nur beim Feiertag bleibt die
>> Zahl konstant. Für die Berechnung kannst du o.g. Flag nehmen oder du
>
> Nett.

Die einfachsten Sachen sind meistens die Besten :-)

Im SQL Server Magazine war vor kurzem ein langer Artikel mit
verschiedenen Methoden, eine komplizierter als die andere, nur die
einfachste hat gefehlt, damit lässt sich ja auch kein mehrseitiger
Artikel füllen...

Dieter