AddDate()

 

Aby dodać lub odejmować dni od daty w SQL Serwerze wystarczy użyć znaków plus minus.

 

 

SELECT      GETDATE() AS 'Dzis',
            GETDATE() + 14 AS '14 Dni później',
            GETDATE() - 14 AS '14 Dni wcześniej'

Rezultat:

Dzis                    14 Dni później          14 Dni wcześniej
----------------------- ----------------------- -----------------------
2013-06-28 20:42:35.753 2013-07-12 20:42:35.753 2013-06-14 20:42:35.753

Jednakże jeśli musisz dodać lata/miesiące do daty musisz użyć funkcji “DATEADD()”

Składnia: DATEADD( cześć dnia, liczba, data)

Gdzie, część dnia = year, quarter, month, day…

              number = liczba całkowita, która określa liczbę wartość, która ma być dodana

              data = data

Oto użycie tej funkcji.

SELECT      GETDATE(), 'Dziś'
UNION ALL
SELECT      DATEADD(DAY,  14, GETDATE()), '10 Dni później'
UNION ALL
SELECT      DATEADD(DAY, -14, GETDATE()), '10 Dni wcześniej'
UNION ALL
SELECT      DATEADD(MONTH,  1, GETDATE()), 'Następny miesiąc'
UNION ALL
SELECT      DATEADD(MONTH, -1, GETDATE()), 'Poprzedni miesiąc'
UNION ALL
SELECT      DATEADD(YEAR,  1, GETDATE()), 'Następny rok'
UNION ALL
SELECT      DATEADD(YEAR, -1, GETDATE()), 'Poprzedni rok'

Rezultat:

----------------------- -----------------
2013-06-28 20:45:28.973 Dziś
2013-07-12 20:45:28.973 10 Dni później
2013-06-14 20:45:28.973 10 Dni wcześniej
2013-07-28 20:45:28.973 Następny miesiąc
2013-05-28 20:45:28.973 Poprzedni miesiąc
2014-06-28 20:45:28.973 Następny rok
2012-06-28 20:45:28.973 Poprzedni rok

Możesz także odejmować bezpośrednio daty.

SELECT      GETDATE() - GETDATE(), 'DATA ZERO'

Jak widać odejmując datę dzisiejszą od daty dzisiejszej otrzymuje  wartość domyślną “1900-01-01”.

----------------------- ---------
1900-01-01 00:00:00.000 DATA ZERO

Ogólnie dodawanie,odejmowanie dat do innych dat nie jest za bardzo użyteczne. Oto przykład, który ukazuje co dokładnie w takim wypadku my dodajemy.

SELECT      DATEADD(YEAR,  -100, GETDATE()),' + ' 
,GETDATE(),GETDATE()  + DATEADD(YEAR,  -100, GETDATE()), 
'DODAWANIE DAT BEZPOSREDNIO'