还是日期问题,在线结分
问题:根据当前时间判断这一周的起始时间和结束时间
以周六为一星期的第一天
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
应该怎么做
------解决方案--------------------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 '
------解决方案--------------------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 '
------解决方案--------------------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) ";
------解决方案--------------------问题:根据当前时间判断这一周的起始时间和结束时间
以周六为一星期的第一天
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 '