Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Select: Alle Tage des Monats (https://www.delphipraxis.net/186509-select-alle-tage-des-monats.html)

Jasocul 8. Sep 2015 11:00

Datenbank: MS-SQL • Version: 2008 R2 • Zugriff über: SQL

Select: Alle Tage des Monats
 
Ich benötige ein Select, dass mir eine Liste der Tage eines vorgegebenen Monats liefert. Beim aktuellen Monat nur bis zum aktuellen Datum.
Natürlich werden weitere Spalten gebildet, aber die sind auch vom jeweiligen Datum abhängig.

Spontan habe ich keine Lösung dafür parat und Google hat mir auch nichts geliefert.

Hat jemand eine gute Idee?

Phoenix 8. Sep 2015 11:03

AW: Alle Tage des Monats
 
Zitat:

Zitat von Jasocul (Beitrag 1315074)
Ich benötige ein Select

Wie sieht denn die Datenstruktur aus? Ohne die kann niemand einen Tip geben, wie man so ein Statement zusammenbaut?

Brauchst Du eigentlich einfach immer alle Tage oder nur die, zu denen es auch Einträge in der DB gibt?
Denn im ersten Fall würde ich gar nicht über die Datenbank gehen, sondern die Tage über Hausmittel in der Sprache ermitteln.

Bbommel 8. Sep 2015 11:10

AW: Alle Tage des Monats
 
Ich bin neugierig geworden und habe mal nach "t-sql days of month" gegoogelt. Der Gockel lieferte mir das hier:
http://stackoverflow.com/questions/6...-in-sql-server

Habe die Lösungen dort nicht selber getestet, aber das sieht doch nach dem aus, was du suchst, oder?

Jasocul 8. Sep 2015 11:12

AW: Alle Tage des Monats
 
Zitat:

Zitat von Phoenix (Beitrag 1315076)
Wie sieht denn die Datenstruktur aus? Ohne die kann niemand einen Tip geben, wie man so ein Statement zusammenbaut?

Die Datenstruktur spielt keine Rolle.
Im Grunde kann man mit
Code:
Select GetDate()
starten. Das benötigt nichtmal ein "from".
Zitat:

Zitat von Phoenix (Beitrag 1315076)
Brauchst Du eigentlich einfach immer alle Tage oder nur die, zu denen es auch Einträge in der DB gibt?
Denn im ersten Fall würde ich gar nicht über die Datenbank gehen, sondern die Tage über Hausmittel in der Sprache ermitteln.

Ich brauche jeden einzelnen Tag.
Bisher habe ich das in Delphi in einer virtuellen Tabelle erstellt. Jetzt soll das aber als View ins System, damit ein dazu passender Report automatisiert ausgedruckt werden kann. Auch das ließe sich mit Delphi lösen, aber wir wollen nach Möglichkeit unser Konzept (ohne externe Programme) einhalten.

Bbommel 8. Sep 2015 11:15

AW: Alle Tage des Monats
 
Ah, sorry, erst durch deine zweite Antwort habe ich gesehen, dass du die Liste der Tage und nicht die Anzahl der Tage brauchst. Man liest halt manchmal auch, was man lesen will. :oops: Aber sollte sich dann damit nicht eine Schleife in SQL bauen lassen?

Jasocul 8. Sep 2015 11:16

AW: Alle Tage des Monats
 
EDIT: zu langsam

Phoenix 8. Sep 2015 11:23

AW: Alle Tage des Monats
 
Schau Dir mal das hier an: http://social.technet.microsoft.com/...dar-table.aspx
Du kannst damit eine Tabelle mit allen relevanten Daten generieren und die dann direkt abfragen. Ist wahrscheinlich schneller und effizienter als dynamische Daten jedes mal bei einer Abfrage zu generieren. Vor allem bei Reports ist das vermutlich effizienter, weil Du dann über passende Indexe gleich joinen kannst.

Jasocul 8. Sep 2015 11:27

AW: Alle Tage des Monats
 
@Phoenix:
Danke, das sieht auf den ersten Blick gut aus.

Ich habe jetzt auch nochmal auf englisch recherchiert und folgendes gefunden:
http://stackoverflow.com/questions/1...d-current-date

Mal sehen, was besser passt.:-D

jobo 8. Sep 2015 14:59

AW: Select: Alle Tage des Monats
 
Solche und ähnliche Fragen hatten wir hier schon öfter. Eine Rowgenerator Lösung ist m.E. am schnellsten und Ressourcen schonensten. Daraus kann man beliebige Datums ableiten.

Bei der Lösung in SO direkt im vorigen Post muss man natürlich mit maxrecursion 0/*!*/ aufpassen. Wenn der Nutzungsbereich klar ist, hier max 31 (Tage) würde ich das auch so einsetzen. Nicht das mal eine Endlosschleife auftritt, weil die Where Bedingung verschlampt wurde.
Der Hinweis bezüglich fester Tabelle war schon ebenso häufig da. An diesem Punkt landet man sofort, sobald es Anforderungen zu Feiertagen, Arbeitstagen, regional, national, international usw. oder sonstigen harten Ressourcen in diesem Bereich gibt.

Dejan Vu 8. Sep 2015 21:03

AW: Select: Alle Tage des Monats
 
Google mal nach "Date Dimension Table". Es gibt fertigen Tabellen zum Einbauen in deine DB. Dann hast Du keine Sorgen mehr mit Auswertungen, die etwas mit Datumse zu tun haben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz