select dateadd(dd,-day('2005-03-21'),'2005-03-21')select dateadd(mm,-1,dateadd(dd,-day('2005-03-21')+1,'2005-03-21'))

解决方案 »

  1.   

    . SQL Server日期计算
    a. 一个月的第一天
    SELECT  DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0)  
    b. 本周的星期一
    SELECT  DATEADD(wk,  DATEDIFF(wk,0,getdate()),  0) 
    c. 一年的第一天
    SELECT  DATEADD(yy,  DATEDIFF(yy,0,getdate()),  0)  
    d. 季度的第一天
    SELECT  DATEADD(qq,  DATEDIFF(qq,0,getdate()),  0)  
    e. 上个月的最后一天 
    SELECT  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(mm,0,getdate()),  0))  
    f. 去年的最后一天
    SELECT  dateadd(ms,-3,DATEADD(yy,  DATEDIFF(yy,0,getdate()),  0)) 
    g. 本月的最后一天
    SELECT  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(m,0,getdate())+1,  0))  
    h. 本月的第一个星期一
    select  DATEADD(wk,  DATEDIFF(wk,0,                                                          
                                   dateadd(dd,6-datepart(day,getdate()),getdate())        
                                                                                                     ),  0)      
    i. 本年的最后一天
    SELECT  dateadd(ms,-3,DATEADD(yy,  DATEDIFF(yy,0,getdate())+1,  0))。
      

  2.   

    上一个月的第一天
    SELECT  DATEADD(mm,  DATEDIFF(mm,0,dateadd(month,-1,getdate())),  0)上一个月的最后一天
    SELECT  dateadd(ms,-3,DATEADD(mm,  DATEDIFF(m,0,dateadd(month,-1,getdate()))+1,  0))
      

  3.   

    declare @Now datetime,@Lday datetime,@Fday datetime
    set @Now='2006-03-01'
    set @Lday=dateadd(ss,-1,@Now)--最后一天
    select @Lday
    set @Fday=dateadd(mm,-1,@Now)--第一天
    select @Fday
      

  4.   

    改正一下
    declare @Now datetime,@Lday datetime,@Fday datetime
    set @Now='2006-03-8'
    select @Now=convert(datetime,(cast(Year(@Now) as varchar)+'-'+cast(month(@Now) as varchar)+'-01'),120)
    set @Lday=dateadd(ss,-1,@Now)--最后一天
    select @Lday
    set @Fday=dateadd(mm,-1,@Now)--第一天
    select @Fday------------------------------------------------------ 
    2006-02-28 23:59:59.000(所影响的行数为 1 行)                                                       
    ------------------------------------------------------ 
    2006-02-01 00:00:00.000(所影响的行数为 1 行)
      

  5.   

    http://terry52.cnblogs.com/archive/2005/12/28/306271.html