如题,我想利用MSSQL来查询出每个月的最后一天的日期,请问有没有什么函数可以实现啊?

解决方案 »

  1.   

    本月的Select DateAdd(dd,-1,Convert(Varchar(8),DateAdd(mm,1,Getdate()),120)+'01')
      

  2.   

    其余的,可用日期替換掉GetDate() 即可
      

  3.   

    先用 DATEADD(M 将时间换到下个月,再取下个月的 年-月-01,即得到下个月的第一天.
    而这个第一天再 DATEADD(d,-1 就得到这个月的最后一天.思路是这样,写法就不写了.取下个月再取年的原因是因为这个月可能是12月.
      

  4.   


    Select DateAdd(dd,-1,Convert(Varchar(8),DateAdd(mm,1,'2006-12-25'),120)+'01')
    --Result
    2006-12-31 00:00:00.000
      

  5.   

    也就是说,用下个月的第一天的日期减去1,就是这个月的最后一天。而下个月的最后一天,可以通过下面的方法得出:先将当前日期加上一个月,再将得出的结果的用Convert(Varchar(8),@date,120)的方法取出年和月,再将这个字符串连接上“01”,得出的字符串就是下个月的第一天的日期。
      

  6.   

    if object_id('tb') is not null
    drop table tb
    create table tb(Mth int, Days int)
    declare @time datetime,
    @currentTime datetime,
    @month int
    --当前月第一天
    SET @currentTime = convert(varchar(8),getdate(),120) + '01 '
    SET @month = 1while @month <= 12
    BEGIN
    --由当前月第一天求出所有第month月的第一天
    SET @time = dateadd(month,-month(@currentTime)+@month + 1,@currentTime)
    insert into tb(Mth, Days) (select @month, day(DateAdd(dd,-1,@time)))
    SET @month = @month + 1
    END
    select * from tb
    drop table tb
    /*
    Mth         Days
    ----------- -----------
    1           31
    2           28
    3           31
    4           30
    5           31
    6           30
    7           31
    8           31
    9           30
    10          31
    11          30
    12          31(12 行受影响)
    */
      

  7.   


    Select DateAdd(dd,-1,Convert(Varchar(8),DateAdd(mm,1,getdate()),120)+ '01 ')