Tính số ngày trong tháng

Khi lập trình với cơ sở dữ liệu, có thể bạn sẽ cần tính số ngày của tháng để thực hiện mục đích nào đó (Tính số liệu trung bình theo tháng chằng hạn). Tôi xin sẽ giới thiệu với bạn hàm được viết trong SQL

Bạn mở SQL Query viết hàm như sau:
Hàm trả về kiểu Int
Input: Tháng, Năm
Output: Số ngày của tháng

 

CREATE  FUNCTION dbo.funDaysInMonth (
@Thang  Int,
@Nam    Int
)  
RETURNS int
AS  
BEGIN   

DECLARE @mNgay  Int

IF @Thang = 2 
    BEGIN
        IF((@Nam % 4 = 0 AND @Nam %100<>0)OR(@Nam % 400 = 0))
            SET @mNgay = 29
        ELSE
            SET @mNgay = 28
    END
ELSE
    SELECT @mNgay =  
        CASE @Thang
            WHEN 1 THEN 31
            WHEN 3 THEN 31
            WHEN 5 THEN 31
            WHEN 7 THEN 31
            WHEN 8 THEN 31
            WHEN 10 THEN 31
            WHEN 12 THEN 31
            WHEN 4 THEN 30
            WHEN 6 THEN 30
            WHEN 9 THEN 30
            WHEN 11 THEN 30
        END

RETURN @mNgay
END

Bạn có thể kiểm tra bằng lệnh sau:

Select dbo.funDaysInMonth (2,2004) --29
Select dbo.funDaysInMonth (2,2005) --28



Chúc các bạn thành công!