select 
cast(cast(year(getdate())as char(4))+'/'+cast(month(getdate()) as char(2))+'/01' as datetime)as firstDate,
dateadd(d,-1,cast(cast(year(getdate())as char(4))+'/'+cast(month(dateadd(m,1, getdate())) as char(2))+'/01' as datetime)) as lastDate

解决方案 »

  1.   

    select substring(CONVERT(varchar,getdate(),21),1,7) + '-01' m_star,dateadd(day,-1,cast(substring(CONVERT(varchar,getdate(),21),1,5) + cast(cast(substring(CONVERT(varchar,getdate(),21),6,2) as int) + 1 as varchar) + '-01' as datetime)) as m_end
      

  2.   

    select 月初=convert(varchar(10),cast(cast(datepart(yyyy,getdate()) as varchar)+'-'+cast(datepart(mm,getdate()) as varchar)+'-01' as datetime),120),月末=convert(varchar(10),dateadd(mm,1,cast(cast(datepart(yyyy,getdate()) as varchar)+'-'+cast(datepart(mm,getdate()) as varchar)+'-01' as datetime))-1,120)/*
       月初              月末
    2005-07-01 2005-07-31*/
      

  3.   

    --可以不用字符串函数就可以
    select dateadd(mm, datediff(mm, '1901-01-01', getdate()), '1901-01-01')
          ,dateadd(dd, -1, dateadd(mm, 1+datediff(mm, '1901-01-01', getdate()), '1901-01-01'))
      

  4.   

    select convert(varchar,dateadd(mm, datediff(mm, '1901-01-01', getdate()), '1901-01-01'),110),convert(varchar,dateadd(dd, -1, dateadd(mm, datediff(mm, '1901-01-01', getdate()), '1901-02-01')),110)
      

  5.   

    -.-
    我的SQL水平
    实在是烂啊 呵呵
    学习
      

  6.   

    --本月初
    SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
    --本月末
    SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))
    --结果
    ------------------------------------------------------ 
    2005-07-01 00:00:00.000(所影响的行数为 1 行)                                                       
    ------------------------------------------------------ 
    2005-07-31 23:59:59.997(所影响的行数为 1 行)