经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MS SQL Server » 查看文章
获取当月的天数列表
来源:cnblogs  作者:Insus.NET  时间:2019/5/10 8:54:35  对本文有异议

实现这个功能,先参考下面几篇博文《T-SQL获取二月份天数https://www.cnblogs.com/insus/archive/2011/04/22/2025019.html

如何获取月份的天数https://www.cnblogs.com/insus/archive/2011/09/10/2173028.html

获取指定日期所在月份的第一天https://www.cnblogs.com/insus/archive/2011/09/11/2173612.html


可以写一个Table-valued Functions:

 

 

  1. SET ANSI_NULLS ON
  2. GO
  3. SET QUOTED_IDENTIFIER ON
  4. GO
  5.  
  6. -- =============================================
  7. -- Author: Insus.NET
  8. -- Create date: 2019-05-09
  9. -- Update date: 2019-05-09
  10. -- Description: 获取指定月份所有日期
  11. -- =============================================
  12.  
  13. CREATE FUNCTION [dbo].[tvf_DaysOfMonth]
  14. (
  15. @InputDate DATETIME
  16. )
  17. RETURNS @dump TABLE
  18. (
  19. [Date] DATETIME
  20. )
  21. AS
  22. BEGIN
  23. DECLARE @firstDayOfMonth DATETIME = DATEADD(MONTH,DATEDIFF(MONTH,0,@InputDate),0) --获取所在月份第一天日期
  24.  
  25. DECLARE @daysOfMonth INT = DAY(DATEADD(DAY,-1, DATEADD(MONTH,1,@firstDayOfMonth))) --获取所在月份的天数
  26.  
  27. INSERT INTO @dump ([Date]) VALUES(@firstDayOfMonth) --把第一天插入表中。
  28.  
  29. DECLARE @d INT = 1
  30. WHILE @d < @daysOfMonth
  31. BEGIN
  32. INSERT INTO @dump ([Date]) VALUES(@firstDayOfMonth + @d)
  33. SET @d = @d + 1
  34. END
  35. RETURN
  36. END
Source Code

 

例子说明:

 

如果想更多的写法参考, Insus.NET更改了上面的自定义函数,先是获取指定日期所在月份的第一天日期,然后获取指定日期下一个月份的第一天日期。

 

  1. SET ANSI_NULLS ON
  2. GO
  3. SET QUOTED_IDENTIFIER ON
  4. GO
  5.  
  6. -- =============================================
  7. -- Author: Insus.NET
  8. -- Create date: 2019-05-09
  9. -- Update date: 2019-05-09
  10. -- Description: 获取指定月份所有日期
  11. -- =============================================
  12.  
  13. CREATE FUNCTION [dbo].[tvf_DaysOfMonth]
  14. (
  15. @InputDate DATETIME
  16. )
  17. RETURNS @dump TABLE
  18. (
  19. [Date] DATETIME
  20. )
  21. AS
  22. BEGIN
  23. DECLARE @firstDayOfMonth DATETIME = DATEADD(MONTH,DATEDIFF(MONTH,0,@InputDate),0) --获取指定月份第一天日期
  24. DECLARE @firstDayOfNexMonth DATETIME = DATEADD(MONTH,1,@firstDayOfMonth) --获取指定月份下一个月份的第一天日期
  25.  
  26. DECLARE @dumpDate DATETIME = @firstDayOfMonth
  27.  
  28. WHILE (@dumpDate < @firstDayOfNexMonth)
  29. BEGIN
  30. INSERT INTO @dump ([Date]) VALUES(@dumpDate)
  31. SET @dumpDate = @dumpDate + 1
  32. END
  33. RETURN
  34. END
Source Code

 

上面2个自定义函数均可以使用。

原文链接:http://www.cnblogs.com/insus/p/10837900.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号