使用SQL server如何获得本月的第一天和本星期的第一天的日期?我只知道要用到DATEADD和DATEDIFF

解决方案 »

  1.   


    select cast(left(convert(varchar,getdate(),23),8)+'01' as date) '本月的第一天',
    cast(dateadd(d,-1*(datepart(dw,getdate()))+1,getdate()) as date) '本星期的第一天'
    本月的第一天    本星期的第一天
    ----------    ----------
    2012-03-01     2012-03-25(1 row(s) affected)
      

  2.   

    --本月第一天:
    select convert(varchar(7),getdate(),120) + '-01'/*
               
    ---------- 
    2012-03-01(所影响的行数为 1 行)
    */本周第一天:
    SELECT  DATEADD(wk,  DATEDIFF(wk,0,getdate()),  0) /*
                                                           
    ------------------------------------------------------ 
    2012-03-26 00:00:00.000(所影响的行数为 1 行)*/
      

  3.   

    select dateadd(month, datediff(month,0,getdate()), 0) -- 本月第一天
    select dateadd(week, datediff(week,-1,getdate()), -1) -- 本周第一天(星期日)
    select dateadd(week, datediff(day,0,getdate())/7, 0) -- 本周第一天(星期一)
    /*
    2012-03-01 00:00:00.000
    2012-03-25 00:00:00.000
    2012-03-26 00:00:00.000
    */