SQL Produkte der letzten 30 Tage anzeigen lassen

Bluedisaster

Cadet 3rd Year
Registriert
Juli 2015
Beiträge
56
Hallo,
ich bearbeite grade Daten einer Produktionsdatenbank und habe Folgendes Problem:

Ich habe eine Spalte in der alle per Datum vermerkt ist, wann ein Produkt erstellt wurde (siehe Bild)

Capture.PNG

Nun will ich mir die Produkte der letzten 30 Tage anzeigen lassen.

Ich habe schon was gefunden, aber mit dieser Funktion lassen sich nur die Produkte des aktuelle Jahres anzeigen.

Code:
Select *
From xyz
Where Erstelldatum  like '%'+ FORMAT(GETDATE(),'yyyy') + '%'


Schon mal vielen Dank im voraus :D
 
Quick and dirty würde ich jetzt machen den letzten Monat... also gleiches Datum einen Monat früher...
Code:
DATEADD(Month, -1, getdate())

Ist jetzt nicht genau das mit 30 Tagen :-/ aber für mehr kenn ich mich nicht gut genug aus...

bzw eben
Code:
DATEADD(DAY,-30,GETDATE())

aber über Google wärst du sicher fündig geworden...
 
Du brauchst noch die Sortierung mit <order by ASC / DESC>
ASC -> von der höchsten zur niedrigsten
DESC -> von der niedrigsten zur höchsten
 
Zuletzt bearbeitet:
Select *
From xyz
Where Erstelldatum >= DATEADD(Day,-30,GETDATE())

optional: Order by Erstelldatum desc
Dann hast du den neusten Eintrag oben in der Liste.
;-)
 
norog schrieb:
optional: Order by Erstelldatum desc
Dann hast du den neusten Eintrag oben in der Liste.
;-)

Kann man dann z.B. mit TOP50 auch noch weiter eingrenzen damit das result set nicht zu groß wird.
 
Nebst der Funktion muss auch der Code etwas umgeschrieben werden. "Like" ist für diese Operation nicht so prickelnd. Ich gehe mal stark davon aus dass die Erstelldatum Spalte einen entsprechenden Datatype hat (wie z.B. smalldatetime).

Dann würde der Code so aussehen:

Code:
SELECT *
FROM Table
WHERE Erstelldatum  >= DATEADD(DAY,-30,GETDATE())

Auf eine Sort Operation (ORDER BY) würde ich bei SQL Statements generell verzichten wenn ich die Möglichkeit habe dies auf der Clientseite (z.B. Excel) zu erledigen, da diese für den Datenbank Server ein unnötiger Mehraufwand ist wenn man es dort nicht unbedingt braucht. Außerdem sollte man SQL Statements auf "relationale Art" schreiben. Ein "SELECT *" oder "ORDER BY" ist in diesem Zusammenhang kein relationales SQL. Einen guten Artikel dazu findet man hier (oder du suchst in Google nach "Using SQL in a relational way).

Edit: Damn, norog war mim code schneller ;-)
 
Zurück
Oben