Problem:
Sie möchten das Datum 30 Tage vor einem bestimmten Datum in T-SQL abrufen.
Beispiel:
Unsere Datenbank hat eine Tabelle namens Computer
mit Daten in den Spalten Id
, Name
und PurchaseDate
.
ID | Name | Kaufdatum |
---|---|---|
1 | Sony GX1000 | 2019-01-20 |
2 | Samsung LX2000 | 2019-04-15 |
3 | Dell K80 | 2019-08-30 |
Lassen Sie uns den Namen jedes Computers und das Datum vor vor 30 Tagen abrufen sein Kaufdatum.
Lösung:
Wir verwenden die Funktion DATEADD(), um eine bestimmte Anzahl von Tagen von einem Datum abzuziehen.
SELECT Name, DATEADD(day, -30, PurchaseDate) AS BeforePurchaseDate; FROM Computer;
Hier ist das Ergebnis der Abfrage:
Name | Vor dem Kaufdatum |
---|---|
Sony GX1000 | 21.12.2018 |
Samsung LX2000 | 2019-03-16 |
Dell K80 | 2019-07-31 |
Diskussion:
Wenn Sie Datums- oder Zeitangaben in SQL Server subtrahieren möchten, verwenden Sie DATEADD()
Funktion. Es braucht drei Argumente. Das erste Argument ist die Datums-/Zeiteinheit – in unserem Beispiel geben wir den Tag an Einheit.
Als nächstes kommt der Wert der Datums- oder Zeiteinheit . In unserem Beispiel ist dies -30 , weil wir 30 Tage vom aktuellen Datum wegnehmen. Denken Sie daran, dass das Minus Subtrahieren bedeutet der Wert; Ohne dieses Zeichen addieren Sie das angegebene Datum.
Das letzte Argument ist das Datum, an dem wir operieren; Dies könnte eine date/time/datetime-Spalte oder ein beliebiger Ausdruck sein, der ein Datum oder eine Uhrzeit zurückgibt. In unserem Beispiel verwenden wir PurchaseDate
, ein date
Säule.
Die Funktion gibt ein geändertes Datum zurück. In unserem Beispiel die Abfrage für den Computer mit dem Namen 'Dell K80'
gibt ein neues Datum im BeforePurchaseDate
zurück Säule. Das ursprüngliche Datum '2019-08-30'
wird auf das Datum vor 30 Tagen geändert:'2018-07-31'
.
Sie können das DATEADD()
verwenden Funktion für alle Datums- und Zeitdatentypen.