CREATE function dbo.fn_ListDayOfMonth
(
@year int = 2023, @month int = 10
)
returns table
as
return
WITH numbers
as
(
Select 1 as value
UNion ALL
Select value + 1 from numbers
where value + 1 <= Day(EOMONTH(datefromparts(@year,@month,1)))
)
SELECT convert(varchar(4), @year) + iif(@month<10,'0','') + convert(varchar(2),@month) as NamThang, datefromparts(@year,@month,numbers.value) day , DATEPART(dw,datefromparts(@year,@month,numbers.value)) as T
FROM numbers
GO
Here's the T-SQL query:
DECLARE @Nam INT = 2023, @Thang INT = 10, @EmployeeId BIGINT = 1627608121918754816
SELECT DK.*
FROM [dbo].fn_ListDayOfMonth(@Nam, @Thang) AS P
JOIN [dbo].[CC_DangKy_20231001] AS DK ON P.NamThang = DK.NamThang AND DK.EmployeeId = @EmployeeId
FUNC
Table: