如何获取月份的天数
今天查看以前專案的數(shù)據(jù)庫自定義函數(shù),溫習(xí)溫習(xí)。發(fā)現(xiàn)其中有一個(gè)函數(shù),是獲取月份的天數(shù)的自定義函數(shù)。如下:
udf_DaysInMonth 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
?
獲取月份天數(shù),以前在博客上也有寫過,不過它只是取得二月份的天數(shù)。鏈接如下:http://www.cnblogs.com/insus/articles/2025019.html
現(xiàn)第一眼看見專案中這個(gè)函數(shù),總覺它寫得不夠好的感覺,是否能把它改寫得更好些,啟發(fā)點(diǎn)也是從獲取二月份天數(shù)的CASE函數(shù)想起的。
因此,我嘗試改了,如下:
udf_DaysInMonth_Ver2 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
?
如果你已經(jīng)有引過Insus.NET那個(gè)獲取二月份天數(shù)的自定義函數(shù),也可以參考下面這個(gè)版本:
udf_DaysInMonth_Ver2_1 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
?
轉(zhuǎn)載于:https://www.cnblogs.com/insus/archive/2011/09/10/2173028.html
總結(jié)
- 上一篇: .net框架、CLR和C#的版本之间的对
- 下一篇: 普渡大学计算机硕士申请条件,普渡大学计算