Zeitraum - Aktuelles Datum weniger 30 Tage - via MS SQL berechnen
Hallo zusammen,
es existieren zwar einige Beiträge, die sich mit diesem Thema beschäftigen, dennoch
habe ich nichts gefunden, was eindeutig passen würde. Deshalb meine Frage:
Wie berechne ich in einer WHERE-Bedingung unter MS SQL 2005 einen Zeitraum vom aktuellen
Datum und 30 Tage zurück. Also z.B. von Heute (24.11.2008) bis zum 24.10.2008? Die Datenbank
soll alle Datensätze zurückliefern, die in diesem Zeitraum liegen.
Danke im voraus!
Beste Grüße
ds
es existieren zwar einige Beiträge, die sich mit diesem Thema beschäftigen, dennoch
habe ich nichts gefunden, was eindeutig passen würde. Deshalb meine Frage:
Wie berechne ich in einer WHERE-Bedingung unter MS SQL 2005 einen Zeitraum vom aktuellen
Datum und 30 Tage zurück. Also z.B. von Heute (24.11.2008) bis zum 24.10.2008? Die Datenbank
soll alle Datensätze zurückliefern, die in diesem Zeitraum liegen.
Danke im voraus!
Beste Grüße
ds
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 102543
Url: https://administrator.de/forum/zeitraum-aktuelles-datum-weniger-30-tage-via-ms-sql-berechnen-102543.html
Ausgedruckt am: 21.02.2025 um 18:02 Uhr
6 Kommentare
Neuester Kommentar
Moin diskskin,
dafür ist die DateDiff()-Funktion gedacht. Hier jetzt mal als SQL bzw. T-SQLSkalarfunktion, nicht als VB/VBSkript-Implementierung.
Beispiel:
Geht natürlich nicht nur mit Timestamp-Datumsfeldern, sonder auch mit date/datetime.
Grüße
Biber
dafür ist die DateDiff()-Funktion gedacht. Hier jetzt mal als SQL bzw. T-SQLSkalarfunktion, nicht als VB/VBSkript-Implementierung.
Beispiel:
SELECT * From DyTable
Where DATEDIFF(day, DyTable.DyTimestamp, CURRENT_TIMESTAMP) <= 30;
Geht natürlich nicht nur mit Timestamp-Datumsfeldern, sonder auch mit date/datetime.
Grüße
Biber
Moin diskskin,
natürlich kannst Du das schreiben, ist ja ein freies Land hier.
Aber einen Unterschied macht es trotzdem.
Denn Du hättest, wenn es sich bei den Datumswerten zufällig um den 1.12.2008 und den 31.1.2009 handeln würde,auch nur "einen Monat oder weniger" Unterschied, da die Datediff()-Implementierung nur ganzzahl-Werte rückliefert.
Aber in diesem Fall würden bei Dir ca. 60 und damit doppelt so viele Tage berücksichtigt als meine 30 Tage.
Zum Nachschlagen bei MS-SQL benutze ich ich meist die BOL oder MSDN - habe da selbst nichts in Papierform.
Grüße
Biber
natürlich kannst Du das schreiben, ist ja ein freies Land hier.
Aber einen Unterschied macht es trotzdem.
Denn Du hättest, wenn es sich bei den Datumswerten zufällig um den 1.12.2008 und den 31.1.2009 handeln würde,auch nur "einen Monat oder weniger" Unterschied, da die Datediff()-Implementierung nur ganzzahl-Werte rückliefert.
Aber in diesem Fall würden bei Dir ca. 60 und damit doppelt so viele Tage berücksichtigt als meine 30 Tage.
Zum Nachschlagen bei MS-SQL benutze ich ich meist die BOL oder MSDN - habe da selbst nichts in Papierform.
Grüße
Biber
Moin siskskin,
letzter Nachtrag:
ich will mir ja nicht den Ruf eines Erbsenzählers einhandeln, aber...
"Alle Datensätze aus dem aktuellen Monat" ist wieder etwas ganz anderes und weder gleichbedeutend mit "max. 30 Tage alt" noch mit "Anzahl Monate zwischen den Datumswerten kleiner gleich 1".
Welche Variante Du fachlich/inhaltlich benötigst, das kannst nur Du einschätzen, aber Du solltest diese Abfragen nicht mischen/nicht als austauschbar ansehen.
Grüße
Biber
letzter Nachtrag:
ich will mir ja nicht den Ruf eines Erbsenzählers einhandeln, aber...
"Alle Datensätze aus dem aktuellen Monat" ist wieder etwas ganz anderes und weder gleichbedeutend mit "max. 30 Tage alt" noch mit "Anzahl Monate zwischen den Datumswerten kleiner gleich 1".
Welche Variante Du fachlich/inhaltlich benötigst, das kannst nur Du einschätzen, aber Du solltest diese Abfragen nicht mischen/nicht als austauschbar ansehen.
Grüße
Biber