Thursday, April 18, 2024

Tìm ngày đầu tiền và ngày cuối cùng của tháng với SQL Server

 -- 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