Vấn đề:
Bạn muốn thêm một số ngày nhất định vào một ngày trong T-SQL.
Ví dụ:
Cơ sở dữ liệu của chúng tôi có một bảng có tên Flight
với dữ liệu trong các cột Code
và DepartureDate
.
Mã | Ngày khởi hành |
---|---|
LT2030 | 2019-02-20 |
GH1100 | 2019-03-01 |
SR5467 | ngày 12 tháng 12 năm 2019 |
Hãy thay đổi ngày khởi hành cho tất cả các chuyến bay, thêm hai ngày vào ngày khởi hành hiện tại.
Giải pháp:
Chúng ta sẽ sử dụng hàm DATEADD () để chỉ định đơn vị thời gian cần thêm, xác định số lượng cần thêm và chọn ngày để thay đổi. Hãy xem truy vấn:
SELECT Code, DATEADD(day, 2, DepartureDate) AS ChangedDepartureDate FROM Flight;
Đây là kết quả:
Mã | ChangedDepartureDate |
---|---|
LT2030 | ngày 22 tháng 2 năm 2019 |
GH1100 | 2019-03-03 |
SR5467 | 2020-01-01 |
Thảo luận:
Để thay đổi ngày và / hoặc giờ bằng cách thêm một số cụ thể của đơn vị thời gian đã chọn, hãy sử dụng hàm DATEADD () của SQL Server. Chức năng này hoạt động trên các kiểu dữ liệu ngày, giờ hoặc ngày và giờ. Nó có ba đối số:
- Đơn vị ngày / giờ mong muốn để thêm. Trong ví dụ của chúng tôi, đó là ngày; chúng tôi muốn thêm ngày vào ngày.
- Thêm bao nhiêu đơn vị. Trong ví dụ của chúng tôi, đây là 2; chúng tôi muốn thêm 2 ngày vào ngày hiện tại.
- Một cột chứa ngày / giờ / ngày giờ mà chúng tôi muốn thay đổi. (Trong ví dụ của chúng tôi, chúng tôi sử dụng cột Ngày khởi hành.) Đối số này cũng có thể là một biểu thức trả về ngày / giờ / ngày giờ.
Hàm DATEADD () trả về một ngày mới. Trong ví dụ của chúng tôi, ngày mới được trả về là ChangedDepartureDate
cột. Đối với mã chuyến bay ‘LT2030’, ngày ‘2019-02-20’ hiện là ‘2019-02-22’.
Hàm DATEADD () có thể sử dụng các đơn vị ngày và giờ như year
, quarter
, month
, dayofyear
, day
, week
, weekday
, hour
, minute
, second
, v.v. Bạn có thể tìm hiểu thêm trong tài liệu SQL Server.