Vấn đề:
Bạn muốn lấy ngày trước một ngày cụ thể 30 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 Computer
với dữ liệu trong các cột Id
, Name
và PurchaseDate
.
Id | Tên | Ngày mua hàng |
---|---|---|
1 | Sony GX1000 | 2019-01-20 |
2 | Samsung LX2000 | 2019-04-15 |
3 | Dell K80 | 2019-08-30 |
Hãy lấy tên của từng máy tính và ngày trước 30 ngày ngày mua của nó.
Giải pháp:
Chúng tôi sẽ sử dụng hàm DATEADD () để trừ một số ngày nhất định cho một ngày.
SELECT Name, DATEADD(day, -30, PurchaseDate) AS BeforePurchaseDate; FROM Computer;
Đây là kết quả của truy vấn:
Tên | BeforePurchaseDate |
---|---|
Sony GX1000 | 2018-12-21 |
Samsung LX2000 | ngày 16 tháng 3 năm 2019 |
Dell K80 | 2019-07-31 |
Thảo luận:
Nếu bạn muốn trừ ngày hoặc giờ trong SQL Server, hãy sử dụng DATEADD()
hàm số. Nó cần ba đối số. Đối số đầu tiên là đơn vị ngày / giờ - trong ví dụ của chúng tôi, chúng tôi chỉ định ngày đơn vị.
Tiếp theo là ngày hoặc đơn vị thời gian giá trị . Trong ví dụ của chúng tôi, đây là -30 , bởi vì chúng tôi sẽ mất 30 ngày kể từ ngày hiện tại. Hãy nhớ rằng số trừ biểu thị trừ đi giá trị; nếu không có dấu hiệu này, bạn đang thêm vào ngày nhất định.
Đối số cuối cùng là ngày chúng tôi đang hoạt động; đây có thể là cột ngày / giờ / ngày giờ hoặc bất kỳ biểu thức nào trả về ngày hoặc giờ. Trong ví dụ của chúng tôi, chúng tôi sử dụng PurchaseDate
, một date
cột.
Hàm trả về một ngày đã thay đổi. Trong ví dụ của chúng tôi, truy vấn cho máy tính có tên 'Dell K80'
trả về một ngày mới trong BeforePurchaseDate
cột. Ngày ban đầu '2019-08-30'
được thay đổi thành ngày từ 30 ngày trở lại:'2018-07-31'
.
Bạn có thể sử dụng DATEADD()
cho tất cả các kiểu dữ liệu ngày và giờ.