Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Abfrage, für wieviele Tage Datensätze vorhanden sind


fahrstuhl65 - Sa 22.10.11 12:14
Titel: Abfrage, für wieviele Tage Datensätze vorhanden sind
Moderiert von user profile iconTh69: abgeteilt aus MSSQL - hochs und tiefs in einem zeitraum finden [http://www.c-sharp-forum.de/viewtopic.php?t=107369]

Hi,

so ich bin jetzt weitergekommen, war ein paar Tage unterwegs.

Ich häng grade an einer Abfrage die mir die Anzahl der Tage in der DB auswirft,
den Wert brauch ich als Basis für eine Prozentzahl.

Mit welcher Abfrage kann ich also herausfinden, für wieviel Tage in der Datenbank
auch tatsächlich Datensätze vorhanden sind ? (für die Wochenende usw. sind ja keine
Datensätze vorhanden)

Hab schon einiges gegoogelt, finde da aber nichts ?


fahrstuhl65 - Sa 22.10.11 13:03

Ich habs jetzt aus dem Programm heraus gelöst über eine, wenn auch merkwürdige und komplizierte Schleife,
die aber scheinbar funktioniert:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
// hier holt er Start und Enddatum aus der DB damit das auch funktioniert, wenn
            // mehrere Monate dazu kommen
            DateTime Db_Anfang = Convert.ToDateTime(gesamtdatenTableAdapter.hole_Startdatum());
            DateTime Db_Ende = Convert.ToDateTime(gesamtdatenTableAdapter.hole_Enddatum());

            // Anzahl der Tage berechnen aus DB
            DateTime Start = Db_Anfang;
            DateTime Ende = Db_Ende;

            int zähler = 0;

            // zwei Variablen für den Durchlaufszeitraum schaffen und um die Zeitdifferenz erweitern
            DateTime Interval_Start = new DateTime (Db_Anfang.Year, Db_Anfang.Month, Db_Anfang.Day, 060000);
            DateTime Interval_Ende = new DateTime (Db_Anfang.Year, Db_Anfang.Month, Db_Anfang.Day, 230000);

            while (Interval_Start < Db_Ende)
            {
                
                double Anzahl = Convert.ToDouble(gesamtdatenTableAdapter.ZählenProTag(Interval_Start, Interval_Ende));
                

                if (Anzahl > 0)
                {
                    zähler = zähler +1;
                    
                }

                Interval_Start = Interval_Start.AddDays(1);
                Interval_Ende = Interval_Ende.AddDays(1);

            }


Nicht wirklich "hübsch", scheint das Problem aber auch zu lösen :D


Ralf Jansen - Sa 22.10.11 15:49

Ich wiederhole

Zitat:
weitere Fragen in diesen Thread bitte nur, wenn sie noch zum Titel passen - ansonsten: neue Frage - neuer Thread.