国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

sqlserver中獲取月份的天數的方法分享

2024-08-31 00:58:05
字體:
來源:轉載
供稿:網友
如下:

復制代碼 代碼如下:


CREATE FUNCTION [dbo].[udf_DaysInMonth]
(
@Date DATETIME
)
RETURNS INT
AS
BEGIN
DECLARE @dim AS TABLE (M INT,Dy INT)
INSERT INTO @dim VALUES
(1,31),(3,31),(5,31),(7,31),(8,31),(10,31),(12,31),
(4,30),(6,30),(9,30),(11,30),
(2,
CASE WHEN (YEAR(@Date) % 4 = 0 AND YEAR(@Date) % 100 <> 0) OR (YEAR(@Date) % 400 = 0)
THEN 29
ELSE 28 END
)
DECLARE @RValue INT
SELECT @RValue = [Dy] FROM @dim WHERE [M] = MONTH(@Date)
RETURN @RValue
END
GO


獲取月份天數,以前在博客上也有寫過,不過它只是取得二月份的天數。鏈接如下:
現第一眼看見專案中這個函數,總覺它寫得不夠好的感覺,是否能把它改寫得更好些,啟發點也是從獲取二月份天數的CASE函數想起的。
因此,我嘗試改了,如下:

復制代碼 代碼如下:


CREATE FUNCTION [dbo].[udf_DaysInMonth]
(
@Date DATETIME
)
RETURNS INT
AS
BEGIN
RETURN CASE WHEN MONTH(@Date) IN (1,3,5,7,8,10,12) THEN 31
WHEN MONTH(@Date) IN (4,6,9,11) THEN 30
ELSE CASE WHEN (YEAR(@Date) % 4 = 0 AND YEAR(@Date) % 100 <> 0) OR (YEAR(@Date) % 400 = 0)
THEN 29
ELSE 28
END
END
END


如果你已經有引過Insus.NET那個獲取二月份天數的自定義函數,也可以參考下面這個版本:

復制代碼 代碼如下:


CREATE FUNCTION [dbo].[udf_DaysInMonth]
(
@Date DATETIME
)
RETURNS INT
AS
BEGIN
RETURN CASE WHEN MONTH(@Date) IN (1,3,5,7,8,10,12) THEN 31
WHEN MONTH(@Date) IN (4,6,9,11) THEN 30
ELSE [dbo].[DaysOfFebruary](YEAR(@Date))
END
END

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 泌阳县| 昭觉县| 收藏| 浦城县| 鄂温| 靖远县| 邮箱| 苍梧县| 军事| 兰溪市| 普陀区| 曲沃县| 安陆市| 定边县| 镇巴县| 北流市| 右玉县| 鄯善县| 筠连县| 花垣县| 南康市| 出国| 海城市| 大英县| 镇江市| 瑞金市| 莱西市| 雷山县| 清镇市| 卢氏县| 龙川县| 赤壁市| 开平市| 内黄县| 梅河口市| 湛江市| 易门县| 遵义县| 达州市| 竹山县| 确山县|