Vấn đề:
Bạn muốn tìm ngày cuối cùng của tháng cho một ngày cụ thể trong T-SQL.
Ví dụ:
Cơ sở dữ liệu của chúng tôi có một bảng tên là Furniture
với dữ liệu trong các cột Id
, Name
và PurchaseDate
.
Id | Tên | Ngày mua hàng |
---|---|---|
1 | ghế sofa | 2019-02-10 |
2 | bàn | 2019-04-01 |
3 | tủ sách | 2019-05-20 |
Hãy lấy tên sản phẩm và ngày mua cũng như ngày cuối cùng của tháng khi những mặt hàng này được mua.
Giải pháp:
Chúng tôi sẽ sử dụng hàm EOMONTH () để tìm ngày cuối cùng của tháng.
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate) AS LastDayDate FROM Furniture;
Đây là kết quả của truy vấn:
Tên | Ngày mua hàng | LastDayDate |
---|---|---|
ghế sofa | 2019-02- 10 | 2019-02- 28 |
bàn | 2019-04- 01 | 2019-04- 30 |
tủ sách | 2019-05- 20 | 2019-05- 31 |
Thảo luận:
Nếu bạn muốn lấy ngày có chứa ngày cuối cùng của tháng của một ngày nhất định, hãy sử dụng hàm EOMONTH (). Hàm này nhận một đối số bắt buộc:ngày (hoặc ngày và giờ), có thể là cột ngày / giờ hoặc biểu thức trả về ngày tháng. (Trong ví dụ của chúng tôi, chúng tôi sử dụng PurchaseDate
cột.)
EOMONTH () trả về ngày cuối cùng của tháng làm đối số. Truy vấn ở trên cho ghế sofa có ngày mua ‘2019-02-10’ trả về ‘2019-02-28’; vào tháng 2 năm 2019, ngày cuối cùng của tháng là ngày 28.
Nếu bạn muốn trả về ngày cuối cùng của tháng thứ hai, thứ ba, v.v. từ một ngày nhất định, hãy sử dụng đối số thứ hai tùy chọn của EOMONTH ():số tháng cần thêm. Nhìn vào ví dụ:
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate,1) AS LastDayDate FROM Furniture;
Đây là kết quả của truy vấn:
Tên | Ngày mua hàng | LastDayDate |
---|---|---|
ghế sofa | 2019- 02 - 10 | 2019- 03 - 30 |
bàn | 2019- 04 - 01 | 2019- 05 - 31 |
tủ sách | 2019- 05 - 20 | 2019- 06 - 30 |
Đối với ghế sofa có ngày mua là ‘2019-02-10’, truy vấn này trả về ‘2019-03-30’ - ngày cuối cùng của tiếp theo tháng. Chúng tôi đã thêm một tháng vào cuối tháng hiện tại.
Nếu bạn muốn tìm ngày cuối cùng của tháng trước một tháng nhất định, hãy sử dụng giá trị âm (ví dụ:‘-1’) làm đối số thứ hai:
SELECT Name, PurchaseDate, EOMONTH(PurchaseDate,-1) AS LastDayDate FROM Furniture;
Đây là kết quả của truy vấn:
Tên | Ngày mua hàng | LastDayDate |
---|---|---|
ghế sofa | 2019- 02 - 10 | 2019- 01 - 31 |
bàn | 2019- 04 - 01 | 2019- 03 - 31 |
tủ sách | 2019- 05 - 20 | 2019- 04 - 30 |