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.
Doch, du kannst die Zeiten einfach voneinander abziehen, da die Unixzeit seit 01.01.1970 gezählt wird.
Wenn du nach Unix Timestamp suchst, findest du Erklärungen und auch Beispiele im Netz.
Hi,
jenachdem welches dbms du nutzt, für mysql: "SELECT * FROM T WHERE STAMP≥UNIX_TIMESTAMP()-900"
btw. von datetime in unixtime umzurechnen ist eigentlich nicht schwer, allerdings sind einige lösungen nicht so ganz korrekt. in der windows welt kann man genauso gut oder schlecht mit DateTime.Ticks rechnen, sofern einen die Basis nichts stört ^^
falls du ne unixtime implementation suchts kann ich dann ggf. meine mal posten, für meine zwecke funtzt die wunderbar
ich hoffe das hilft dir weiter
MfG
Also danke schon mal für eure Antworten. Ich hab das ganze mal etwas ausführlicher bearbeitet. Ich arbeite mit SQL Server 2008 und Visual Studio 2013 Premium (C#)
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
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.
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
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;
Ich will nun das der Code mir ausgibt zähle meine Einkäufe die im Zeitstempel 1 getätigt wurden,
dann das ganze für Zeitstempel2.
Hi,
ich finde die projection von nem zeit intervall etwas seltsam aber ok ..
ich bin mysql user nur zur info ^^
man kann das mit subselects relativ gut lösen, sind nur etwas gruselig aufzubauen.
Vom prinzip könntest du sowas verwenden im select
runde ( (Stunde * 100 + min)/15,0)+1 => 0:00 - 0:14 = 1; 0:15-0:29 = 2 ...
das währe das innere
im äußeren kannst du dann quasi stumpf summieren:
SUM(Wurdeverkauft) AS sold, SUM(istrückläufig) AS returning,.... from bla where bla group by produktid asc,zeitstempel asc
performance wird wohl nicht unbedingt extrem sein, aber es sollte funktionieren
ich hoffe der anstoß hilft dir weiter
mfg