Problem:
Chcesz uzyskać datę 30 dni przed podaną datą w T-SQL.
Przykład:
Nasza baza danych zawiera tabelę o nazwie Computer z danymi w kolumnach Id , Name i PurchaseDate .
| Identyfikator | Nazwa | Data zakupu |
|---|---|---|
| 1 | Sony GX1000 | 2019-01-20 |
| 2 | Samsung LX2000 | 2019-04-15 |
| 3 | Dell K80 | 2019-08-30 |
Uzyskajmy nazwę każdego komputera i datę 30 dni przed data zakupu.
Rozwiązanie:
Użyjemy funkcji DATEADD(), aby odjąć określoną liczbę dni od daty.
SELECT Name,
DATEADD(day, -30, PurchaseDate)
AS BeforePurchaseDate;
FROM Computer;
Oto wynik zapytania:
| Nazwa | Przed datą zakupu |
|---|---|
| Sony GX1000 | 2018-12-21 |
| Samsung LX2000 | 2019-03-16 |
| Dell K80 | 31-07-2019 |
Dyskusja:
Jeśli chcesz odjąć daty lub godziny w SQL Server, użyj DATEADD() funkcjonować. Wymaga trzech argumentów. Pierwszym argumentem jest jednostka daty/czasu – w naszym przykładzie określamy dzień jednostka.
Dalej jest data lub jednostka czasu wartość . W naszym przykładzie jest to -30 , ponieważ zabieramy 30 dni od aktualnej daty. Pamiętaj, że minus oznacza odejmowanie wartość; bez tego znaku dodajesz do podanej daty.
Ostatnim argumentem jest data, w której operujemy; może to być kolumna daty/godziny/data/godzina lub dowolne wyrażenie zwracające datę lub godzinę. W naszym przykładzie używamy PurchaseDate , date kolumna.
Funkcja zwraca zmienioną datę. W naszym przykładzie zapytanie dotyczące komputera o nazwie 'Dell K80' zwraca nową datę w BeforePurchaseDate kolumna. Pierwotna data '2019-08-30' zmieniono na datę sprzed 30 dni:'2018-07-31' .
Możesz użyć DATEADD() funkcja dla wszystkich typów danych daty i godziny.