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

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

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

2020-07-25 13:20:54
字體:
來源:轉載
供稿:網友
如下:
復制代碼 代碼如下:

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

獲取月份天數,以前在博客上也有寫過,不過它只是取得二月份的天數。鏈接如下:http://www.cnblogs.com/insus/articles/2025019.html
現第一眼看見專案中這個函數,總覺它寫得不夠好的感覺,是否能把它改寫得更好些,啟發點也是從獲取二月份天數的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
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 壤塘县| 徐州市| 神农架林区| 鲁山县| 太白县| 泉州市| 新干县| 壶关县| 个旧市| 古交市| 青州市| 巧家县| 静宁县| 平遥县| 读书| 军事| 广汉市| 江源县| 沿河| 彝良县| 克山县| 尖扎县| 祁东县| 泊头市| 齐齐哈尔市| 西乌珠穆沁旗| 基隆市| 巍山| 象山县| 汶上县| 昌图县| 宁武县| 竹山县| 长沙县| 区。| 兴宁市| 太康县| 海宁市| 来安县| 丰城市| 巫溪县|