-- Cách 1:
-- xác định ngày đầu tiên của tháng hiện tại
SELECT DATEADD(dd,-DAY(getdate()-1),GETDATE())
--- xác định ngày cuối cùng của tháng hiện tại có thể sử dụng cách như sau: xác định tháng tiếp theo, sau đó lấy ngày đầu tiên của tháng đó - 1 = ngày cuối cùng của tháng này
SELECT DATEADD(MONTH,1,GETDATE()) -- ngày này của tháng tiếp theo
--- Ngày đầu tiên của tháng tiếp theo
SELECT DATEADD(dd,-DAY(DATEADD(MONTH,1,GETDATE())-1),DATEADD(MONTH,1,GETDATE()))
--- Ngày cuối cùng của tháng hiện tại bằng ngày cuối -1, vì đã trừ 1 ở trên nên chúng ta bỏ từ 1 thì sẽ là ngày cuối cùng của tháng
SELECT DATEADD(dd,-DAY(DATEADD(MONTH,1,GETDATE())),DATEADD(MONTH,1,GETDATE()))
---Ngoài ra còn có câu lệnh gọn hơn như dưới
SELECT EOMONTH(GETDATE())
Cách 2:
Ngoài ra có một số cách trên internet sử dụng hàm DATEADD ( cộng trừ ngày) và DATEDIFF( tính khoản thời gian) để tính ngày đầy và ngày cuối cùng của tháng
DECLARE @mydate DATETIME
SELECT @mydate = GETDATE()
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@mydate)),@mydate),101) ,
N'Ngày cuối tháng trước'
UNION
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@mydate)-1),@mydate),101) AS Date_Value,
N'Ngày đầu tháng hiện tại' AS Date_Type
UNION
SELECT CONVERT(VARCHAR(25),@mydate,101) AS Date_Value, N'hôm nay' AS Date_Type
UNION
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))),DATEADD(mm,1,@mydate)),101) ,
N'Ngày cuối tháng này'
UNION
SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))-1),DATEADD(mm,1,@mydate)),101) ,
N'Ngày đầu tháng tiếp theo'
Hiểu cách này thì dùng cách đó thôi
No comments:
Post a Comment