SQL Server While 循环获取每月最后一天

标签 sql sql-server

我想要每个月的最后一天,所以我写了这样的查询

declare @date datetime set @date='31-jan-2012' 
while @date<='31-Dec-2012' 
  Begin 
    print @date 
    set @date= DATEADD(M,1,@date)
  End

但是我得到的结果是这样的

Jan 31 2012 12:00AM
Feb 29 2012 12:00AM
Mar 29 2012 12:00AM
Apr 29 2012 12:00AM
May 29 2012 12:00AM
Jun 29 2012 12:00AM
Jul 29 2012 12:00AM
Aug 29 2012 12:00AM
Sep 29 2012 12:00AM
Oct 29 2012 12:00AM
Nov 29 2012 12:00AM
Dec 29 2012 12:00AM

请帮助我

最佳答案

你可能会更好:-

declare @date datetime;
declare @lastDay datetime;

-- Start on the first day of the next month
-- This'll ensure that your month add doesn't throw 
-- weird results
set @date='01-Feb-2012'
while @date<='01-Jan-2013'

Begin
    -- Get last day of previous month
    set @lastDay = DATEADD(DAY, -1, @date)

    -- print that
    print @lastDay

    -- increment @date to move one month into the future.
    set @date= DATEADD(month,1,@date)
End

关于SQL Server While 循环获取每月最后一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14602402/

相关文章:

c# - 在 4 个结果后插入字符串

sql - 具有多个 When 值的 TSQL case 语句?

sql-server - SQL - 过滤日期 X 天数

mysql - 如果第二个表中的条件为真,则从第一个表中选择 1 条记录(所有引用行均处于事件状态 = 0)

mysql - 查找列中最常见的条目 - SQL

sql - Access DB 使用另一个表的值更新一个表

mySQL 搜索多帐户

sql - 错误列引用不明确

sql - 什么是基数以及它如何影响性能 (SQL Server)?

php - CakePHP 对 SQL Server 查找的响应缓慢