AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DATEDIFF ohne Wochenenden

Ein Thema von youuu · begonnen am 31. Mai 2014 · letzter Beitrag vom 31. Mai 2014
Antwort Antwort
Dejan Vu
(Gast)

n/a Beiträge
 
#1

AW: DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 19:19
Man kann sich solche "Tabellen" auch dynamisch generieren.
Das mit den gesetzlichen Feiertagen je Bundesland oder Betriebsversammlungen etc. ist nicht so einfach dynamisch hinzubekommen. Übrigens sind das keine "Tabellen" sondern Tabellen. Für Auswertungen sogar eine der wichtigten.

@youuu: Mag schon sein, das derzeit ein Overkill ist. Aber wen Du mal Zeit hast, bau dir die mal. Hab ich auch gemacht. Mit allen Datum zwischen 1970 und 2100 (ok, da wird man wohl die Feiertage und Betriebsversammlungen anpassen müssen). Die Tabelle wandert in alle Projekte rein. Einmal gemacht, immer profitiert. Dann ist das gar nicht mehr OP.
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#2

AW: DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 21:02
Ok ich schau es mir mal an.

Habe das hier gefunden: https://gist.github.com/johngrimes/408559


Edit: ok habe mir nun solch eine Tabelle angelegt.

http://www.kebos.de/Unbenannt.png

Nur wie binde ich das nun richtig in meine Abfrage ein?

Abfrage sieht momentan noch so aus:
Steven

Geändert von youuu (31. Mai 2014 um 21:27 Uhr)
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#3

AW: DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 21:28
Delphi-Quellcode:
Query.SQL.Text := 'Select P.status, P.kd, P.rn, P.rechnung_datum, P.preis_netto, P.verzug_status, P.rechnung_start_datum, '+
                      'K.firmenname, K.land, K.firma_intern, K.anmerkung, '+
                      'FROM '+DB_KUNDENDATEN+' AS K, '+DB_POSITIONEN+' AS P '+
                      'WHERE (K.kd = P.kd) '+
                      'AND (P.rechnung_start_datum < now()) '+
                      'AND (DATEDIFF(now(), P.rechnung_start_datum) > 26) // Wochentage werden noch dazu gerechnet
Steven
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 22:41
Code:
Select ...
AND (select sum(IIF(WeekEnd='weekday',1,0))
       from datum dt
      where dt.Date between p.rechung_start_datum and now()
    ) > 26
Aber noch besser ist es, eine Spalte 'workingDayCount' in der Datum-Tabelle einzufügen. Der erste Arbeitstag der Tabelle ist 0, der zweite ist 1 usw. Bei Wochenenden wird nicht hochgezählt.
Dann wird das noch schneller, weil Du dann nur noch ein Join brauchst (und eine Variable)

Code:
select WorkingDayCount into :WorkingDayCount from Datum dt where dr.Date=now()
select ....
   join Datum dt on dt.Date = p.rechnung_start_datum
...
where
 ... and dt.WorkingDayCount <= :WorkingDayCount - 26
Bei der Syntax bin ich mir nicht sicher, denn ich kann kein mySQL.
  Mit Zitat antworten Zitat
youuu

Registriert seit: 2. Sep 2008
Ort: Kleve
822 Beiträge
 
Delphi 2010 Professional
 
#5

AW: DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 23:21
Dejan Vu Klasse es funktioniert. Danke hab ich etwas dazu gelernt und bin für das nächste mal mit der Tabelle gewappnet.
Das mit den IF Anweisungen in der Abfrage muss ich mir auch mal genauer ansehen, hab das vorher noch nie gehabt.
Steven
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz