01/10/2018, 17:07

Hàm DATEADD cộng thêm một khoảng thời gian

Khi bạn muốn tăng hay giảm đối với một giá trị thời gian, nếu bạn dùng toán tử + a (trong đó a là một số nguyên) thì SQL chỉ hiểu số nguyên đó là số ngày được tăng (nếu a là số dương) hay giảm (nếu a là số âm). Nếu bạn muốn tăng/giảm theo năm, tháng, quí, ngày, tuần, giờ, phút giây, … thì ...

Khi bạn muốn tăng hay giảm đối với một giá trị thời gian, nếu bạn dùng toán tử + a (trong đó a là một số nguyên) thì SQL chỉ hiểu số nguyên đó là số ngày được tăng (nếu a là số dương) hay giảm (nếu a là số âm). Nếu bạn muốn tăng/giảm theo năm, tháng, quí, ngày, tuần, giờ, phút giây, … thì bạn phải qui đổi ra đơn vị ngày, bạn mất nhiều thời gian để qui đổi.

Vì thế hàm DATEADD sẽ là một lựa chọn tốt nhất. Hàm DATEADD trả về một giá trị ngày mới khi nó được cộng thêm một khoảng thời gian đặc biệt được chỉ định (datepart)

Cú pháp:

DATEADD (datepart, number, date)

Trong đó:

  • datepart: là một đối số truyền vào mà bạn mong muốn tăng hay giảm, dưới đây là một danh sách các datepart do Microft SQL Server qui định:
Datepart Abbreviations
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
  • number: là một số nguyên bạn cần thêm vào date (số nguyên có thể âm hay dương tuỳ tý. Nếu bạn muốn tăng thì số nguyên sẽ là dương; ngược lại, nếu bạn muốn giảm thì số nguyên sẽ là âm).  Nếu bạn truyền vào một con số lẽ, ví dụ 2.85, SQL sẽ tự động bỏ phần lẽ .35, lấy con số 2 đi thao tác.
  • date: là ngày mà bạn muốn tăng/giảm, date có thể có kiểu dữ liệu là datetime hay smalldatetime, hay là kiểu string nhưng có kiểu định dạng ngày tháng, ví dụ: ‘8/29/2010’, tức ngày 29 tháng 8 năm 2010.

Ví dụ:

Hôm nay là ngày 28 tháng 8 năm 2010, bạn muốn thăng lên 1 ngày và 1 tháng. Tức giá trị bạn mong  muốn là ngày 29 tháng 9 năm 2010, được viết như  sau:


SELECT DATEADD(month,1,DATEADD(day,1,'8/28/2010'))

=> kết quả trả về là 29/09/2010


0