国产探花免费观看_亚洲丰满少妇自慰呻吟_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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 师宗县| 呼伦贝尔市| 厦门市| 辽阳市| 称多县| 海口市| 中山市| 伽师县| 呼玛县| 桂阳县| 玛曲县| 通渭县| 航空| 延吉市| 凤凰县| 洛隆县| 泾川县| 萨嘎县| 兴宁市| 新沂市| 马公市| 东兰县| 朝阳县| 辉县市| 榆树市| 通山县| 剑阁县| 布尔津县| 阿勒泰市| 准格尔旗| 新和县| 孝义市| 郧西县| 高要市| 沈阳市| 巴塘县| 肇源县| 黄冈市| 师宗县| 镇巴县| 油尖旺区|