问题:根据当前时间判断这一周的起始时间和结束时间
以周六为一星期的第一天
select dateadd(day,-(datepart(weekday,GetDate())-@@datefirst+7)%7,GetDate())
select dateadd(day,(20-(datepart(weekday,GetDate())+@@datefirst))%7,GetDate())
这两句可以分别得出起始时间2007-09-01 15:55:55 到2007-09-07 15:55:55
可我想得到的结果是2007-09-01 00:00:00 到2007-09-07 24:00:00
应该怎么做

解决方案 »

  1.   

    select convert(varchar(10),dateadd(day,-(datepart(weekday,GetDate())-@@datefirst+7)%7,GetDate()),120) + '00:00:00 000'
    select convert(varchar(10),dateadd(day,(20-(datepart(weekday,GetDate())+@@datefirst))%7,GetDate()),120) + '00:00:00 000'
      

  2.   

    select convert(varchar(10),dateadd(day,-(datepart(weekday,GetDate())-@@datefirst+7)%7,GetDate()),120) + ' 00:00:00'
    select convert(varchar(10),dateadd(day,(20-(datepart(weekday,GetDate())+@@datefirst))%7,GetDate()),120) + ' 00:00:00'
      

  3.   

    实际语句是这样的
    select * from table
    where createdate 
    between 
    dateadd(day," + (-7) * i + ",dateadd(day,-((datepart(weekday,GetDate())-@@datefirst+7)%7),GetDate())) 
    and 
    dateadd(day," +(- 7 )* i + ",dateadd(day,(20-(datepart(weekday,GetDate())+@@datefirst))%7,GetDate())) ";
    大家帮我看看怎么改
      

  4.   

    select * from table
    where createdate 
    between 
    convert(varchar(10),
    dateadd(day," + (-7) * i + ",dateadd(day,-((datepart(weekday,GetDate())-@@datefirst+7)%7),GetDate())) 
    120) + ' 00:00:00.000'
    and 
    convert(varchar(10),
    dateadd(day," +(- 7 )* i + ",dateadd(day,(20-(datepart(weekday,GetDate())+@@datefirst))%7,GetDate()))
    120) + ' 00:00:00.000'
      

  5.   

    或select * from table
    where createdate 
    between 
    cast(convert(varchar(10),
    dateadd(day," + (-7) * i + ",dateadd(day,-((datepart(weekday,GetDate())-@@datefirst+7)%7),GetDate())) 
    120) + ' 00:00:00.000' as datetime)
    and 
    cast(convert(varchar(10),
    dateadd(day," +(- 7 )* i + ",dateadd(day,(20-(datepart(weekday,GetDate())+@@datefirst))%7,GetDate()))
    120) + ' 00:00:00.000' as datetime)
      

  6.   

    select * from table
    where convert(char(10),createdate,120)
    between 
    convert(char(10),dateadd(day," + (-7) * i + ",dateadd(day,-((datepart(weekday,GetDate())-@@datefirst+7)%7),GetDate())),120)
    and 
    convert(char(10),dateadd(day," +(- 7 )* i + ",dateadd(day,(20-(datepart(weekday,GetDate())+@@datefirst))%7,GetDate())),120) ";
      

  7.   

    问题:根据当前时间判断这一周的起始时间和结束时间
    以周六为一星期的第一天
    select dateadd(day,-(datepart(weekday,GetDate())-@@datefirst+7)%7,GetDate())
    select dateadd(day,(20-(datepart(weekday,GetDate())+@@datefirst))%7,GetDate())
    这两句可以分别得出起始时间2007-09-01 15:55:55 到2007-09-07 15:55:55
    可我想得到的结果是2007-09-01 00:00:00 到2007-09-07 24:00:00
    应该怎么做
    ---------------------------------转int型,等于把时分秒截取了,再转datetime型,就是一天的开始了
    select cast(cast(dateadd(day,-(datepart(weekday,GetDate())-@@datefirst+7)%7,GetDate()) as int) as datetime)--同上,一天的开始加上'23:59:59',就是一天的最后时刻。
    --注意:日期里是没有24点的。
    select cast(cast(dateadd(day,(20-(datepart(weekday,GetDate())+@@datefirst))%7,GetDate()) as int) as datetime)+'23:59:59'