Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Unix Zeitstempel aus Datenbank auslesen
julia24 - Di 17.02.15 01:46
Titel: Unix Zeitstempel aus Datenbank auslesen
Hallo,
ich habe eine kleine Frage. Ich möchte alle viertel Stunde Daten aus einer Datenbank ablesen.
Dazu habe ich Daten in der Datenbank die als Unixzeitstempel abgespeichert sind.
Als BeginngDate und EndDate. Wenn ich jetzt hieraus Daten innerhalb der 15 min/ 900s auslesen will, kann ich ja nicht einfach EndDate-BeginingDate machen oder? Ich muss doch relativ aufwendig die Minuten erstmal rausfiltern und es dann berechnen. Oder gibt es da auch einen einfachen weg?
Vielen Dank schon mal für die Hilfe.
Moderiert von
Christian S.: Topic aus Basistechnologien verschoben am Di 17.02.2015 um 09:32
Christian S. - Di 17.02.15 10:31
Kannst Du bitte nochmal besser formulieren, was Du machen willst? :)
julia24 - Di 17.02.15 17:02
Ich will eigentlich nur, alle 15 Minuten Daten aus einer Datenbank auslesen.
Zur verfügung habe ich BeginnDate und EndDate.
Alle 900sekunden (aka 15 Min) sollen die Daten in eine neue Datenbank als
Statistik eingelesen werden.
Konnte ich mich nun verständlich ausdrücken ?
Ralf Jansen - Di 17.02.15 17:37
Ist immer noch nicht klarer. Für uns heißt das du möchtest alle 15 Minuten eine Abfrage an eine Datenbank senden. Dann führ das halt alle 15 Minuten aus z.b. mit einem Timer. Fertig.
Du willst wahrscheinlich was bestimmtest mit bestimmten Einschränkungen regelmäßig ausführen. Wir wissen aber weder womit (ADO.NET, Linq2Sql, EF, ORM etc.) noch wogegen und was genau du willst.
Zitat: |
kann ich ja nicht einfach EndDate-BeginingDate machen oder |
Das klingt z.B. jetzt eher danach das du rausfinden möchtest ob etwas länger als 15 Minuten gedauert hat. Das wäre was völlig anderes als etwas alle 15 Minuten auszuführen.
julia24 - Di 17.02.15 23:21
Es geht im Prinzip um Einkäufe innerhalb einer bestimmten Zeit.
Ich will in eine andere Datenbank im 15 minuten Takt Aufträge aufnehmen.
Also alles was zwischen 0:01 und 0:15 getätigt wurde ist bei mir der Zeitstempel 1.
Also alles was zwischen 0:16 und 0:30 getätigt wurde ist bei mir der Zeitstempel 2.
Datenbank (SQL Server 2008, Visual Studio 2013 Premium)
Datenbank soll dann wie folgt aussehen
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| ProduktId Zeitstempel WurdeVerkauft IstRückläufig IstKaputt
1 1 15 2 1
1 2 23 6 3
2 1 35 0 4
2 2 23 0 0
3 1 10 0 0 |
Alle diese Innformationen ziehe ich aus einer anderen Datenbank die jeden einzelnen Einkauf aufnimmt.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| EinkaufId ProduktId Costumer BeginnDate EndDate
1 1 1
2 2 2
3 1 3
4 3 4 |
Und im BeginnDate und EndDate sind Unixzeitstempel...
Mein Code lautet momentan wie folgt. Da ist nun alles drin nur die Zeit noch nicht
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var validSales = (from sale in sales join product in products on sale.ProductId equals product.Id where sale.IsValid && product.IsActive) GroupBy(sale => sale.ProduktID) .Select(group => new { ID= group.Key, Name = group.FirstOrDefoult().Produkt, CountNichtRückläufig = group.Count(c => c.NichtRückläufig ) })
select sale; |
Moderiert von
Christian S.: C#-Tags hinzugefügt
Moderiert von
Christian S.: Code-Tags hinzugefügt
Ralf Jansen - Di 17.02.15 23:40
Zitat: |
Ich will in eine andere Datenbank im 15 minuten Takt Aufträge aufnehmen.
Also alles was zwischen 0:01 und 0:15 getätigt wurde ist bei mir der Zeitstempel 1.
Also alles was zwischen 0:16 und 0:30 getätigt wurde ist bei mir der Zeitstempel 2. |
Heißt das jetzt du willst alle 15 Minuten eine Ergebniszeile bekommen. Du führst deine Abfrage um 0:15 aus und erhältst die Daten von 0:01 bis 0:15 und dann führst du deine Abfrage um 0:30 aus und erhältst die Daten für 0:16 bis 0:30 oder willst du alle 15 Minuten alle Daten bekommen gruppiert in 15 Minuten Blöcke?
Zitat: |
Und im BeginnDate und EndDate sind Unixzeitstempel... |
Warum hat ein Einkauf ein Beginn und Ende Zeitpunkt? Für mich findet ein Einkauf zu einen Zeitpunkt statt aber nicht in einem Zeitraum.
Wenn es tatsächlich ein Einkaufzeitraum ist wie hängt der mit deinem 15 Minuten Zeitraum zusammen? Müssen sich die beiden Zeiträume schneiden?
Ist dann auch korrekt das ein Einkauf (da Zeitraum) in mehreren 15 Minuten Blöcken mitgezählt werden soll?
julia24 - Mi 18.02.15 03:51
Ich will einmal am Tag die Daten sammeln.
Dann will ich gruppiert die Daten in 15 min Blöcken haben.
Also wie im Beispiel oben beschrieben.
Das Produkt mit der PruduktId 1 wurde in diesem zeitraum 15 mal verkauft.
Im nächsten Timestamp 38 mal. Um mal ein Beispiel zu nennen.
Das hat ein Beginn und Enddatum. Und wenn das Beginndate im Zeitraum 0.01 bis 0.15
liegen würde und das Enddatum bei 0.17, dann würde es doppelt gezählt werden.
So ist die Vorgabe.
Eigentlich ist es ein Anruf der gezählt wird. Dieser bewegt sich dann in diesem Zeitraum.
Es geht um eine Statistik die zählt wieviel Anrufe getätigt wurden. Und das im viertel Stunden Takt.
Ralf Jansen - Mi 18.02.15 10:43
Eine reine EF oder Linq2Sql Lösung sehe ich da nicht. Ich würde wohl einen View oder Stored Function in der Datenbank erstellen der mir diese Zeiträume liefert. Ein Ding das nur ganz viele Zeilen mit 2 Spalten von - bis liefert, eben genau immer jeweils deine 15 Minuten Blöcke und damit dann die eigentlichen Daten joinen. Der Join läuft dann über die Schnittmenge des von-bis Zeitraums dieses Views/Stored Function und des BeginnDate-EndDate Zeitraums deiner Einkauf Tabelle über den von-bis Zeitraum läßt sich dann auch einfach gruppieren.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!