Laden...

Unix Zeitstempel aus Datenbank auslesen

Erstellt von Julia23 vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.832 Views
J
Julia23 Themenstarter:in
36 Beiträge seit 2015
vor 9 Jahren
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.


185 Beiträge seit 2005
vor 9 Jahren

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.

S
69 Beiträge seit 2007
vor 9 Jahren

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

J
Julia23 Themenstarter:in
36 Beiträge seit 2015
vor 9 Jahren

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.

S
69 Beiträge seit 2007
vor 9 Jahren

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