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.