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 1. Jun 2014
Antwort Antwort
Seite 1 von 2  1 2      
youuu

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

DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 19:15
Datenbank: Mysql • Version: 5.1 • Zugriff über: Devart
Hi,

ich möchte gerne die Tage zwischen 2 Datum's berechnen per DATEDIFF, allerdings ohne Wochenenden.
Wie mach ich das am besten?

DATEDIFF(now(), P.datum) Hab ich bislang, darin werden allerdings natürlich nicht die Wochenende abgezogen.
Steven
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#2

AW: DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 19:35
Entweder:
Du berechnest die Differenz, läufst dann in einer Schleife die Wochenen dazwischen durch ziehst Diese ab.

Oder du berechnest die Differenz,
dann werden davon die Tage bis zum nächsten Wochenende (Samstag) abgezogen (in X speichern), danach kann man das durch 7 Teilen und bekommt die Anzahl der Wochen, womit man die entsprechende Anzahl der Samstage abziehen kann und dann wird von X nochmal 1 abgezogen, ebenfalls durch 7 teilen und die entsprechende Anzahl an Sonntagen abziehen.
Ach ja, wenn der Anfang ein Sonntag war, dann nochmal 1 abziehen, da Dieser ja beim Sprung bis zum Samstag übergangen wurde.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (31. Mai 2014 um 19:38 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, 19:38
Wie ich das berechne in Delphi selbst weiß ich, ich möchte es aber direkt in der MySql Abfrage realisieren.


AND (DATEDIFF(now(), P.datum) > 26) // ohne Wochendtagen, also nur Werktage Dachte da an die Funktion WEEKDAY(date)

"Returns the weekday index for date (0 = Monday, 1 = Tuesday, … 6 = Sunday)."

Wie ich das integrieren kann in die Abfrage, weiß ich allerdings nicht genau, da ich nicht gerade der Datenbanker bin
Steven

Geändert von youuu (31. Mai 2014 um 19:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

AW: DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 19:41
Entweder besitzt mySQL eine fertige Funktion dafür, oder du schreibst dir eben selber Eine.
[add] Wobei Google meint, daß es das wohl nicht gibt, denn es gibt mehrere Suchanfragen dafür (Wochenende, Werktage usw.), wobei es überall am Ende auf eine eigene Implemantation hinaus geht.

Das Ganze lässt sich letztendlich auch in einer kleinen Formel zusammenfassen.


Für Postgres hatte ich das mal als Funktion geschrieben, wobei dort auch noch Feiertage abgezogen werden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (31. Mai 2014 um 19:46 Uhr)
  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, 19:54
Nein gibt leider keine Funktion von Mysql dafür. Eine selber schreiben für Mysql, wüsst ich gar nicht wie ich das machen soll.
Ich wollte halt ungern das noch mal separat im Programm machen.

edit: ich konnte auch keine Funktion finden, die die anzahl an Wochenenden ausgibt. ;/
Steven

Geändert von youuu (31. Mai 2014 um 19:56 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 20:01
Wenn Du das häufiger brauchst und vielleicht auch Feiertage mit einbeziehen willst, baue dir eine Datumstabelle, mit den Spalten 'Datum', 'IstArbeitstag', 'IstWochenTag' usw. Vielleicht noch die KW usw. Sehr praktisch, so eine Tabelle.

Um dann die Anzahl der Wochentage zu ermitteln:
SQL-Code:
select sum(istWochenTag)
from DatumsTabelle
where Datum between :Then and :Now
Arbeitstage:
SQL-Code:
select sum(istArbeitsTag)
from DatumsTabelle
where Datum between :Then and :Now
usw. usw.

Solche Tabellen werden bei DWH auch 'Date Dimension Table' genannt. Es gibt Generatoren und fertige EXCEL/CSV-Tabellen im Internet. Einfach mal googeln.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#7

AW: DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 20:10
Man kann sich solche "Tabellen" auch dynamisch generieren.

mySQL kann doch bestimmt auch sowas wie Sequenzen?
- eine Reihe von Datumswerten über den gewünstschen Zeitraum generieren
- im WHERE die Wochendenden ignorieren
- und ebenfalls via COUNT zählen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (31. Mai 2014 um 20:16 Uhr)
  Mit Zitat antworten Zitat
youuu

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

AW: DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 20:13
Ich glaube das dass zu OP für meine Abfrage ist. Werde das dann wohl lieber direkt im Programm lösen müssen.
Steven
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#9

AW: DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 20: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
 
#10

AW: DATEDIFF ohne Wochenenden

  Alt 31. Mai 2014, 22: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 22:27 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz