2010-11-15 175 views
1

我想从当前星期内的日期字段具有值的表中选择所有行。我想要从当周的星期一到当天的行。选择具有本周内值的日期字段的行

例子:

 
ID adate 
--------------- 
1 11-11-2010 
2 12-11-2010 
3 13-11-2010 
4 14-11-2010 
5 15-11-2010 

我想在这种情况下,行是:

 
ID adate 
--------------- 
4 14-11-2010 //this week's Monday 
5 15-11-2010 //till today 

回答

2

这将工作从星期日到星期六一周。从周一如果你想星期你必须适应它星期日:

select * 
    from myTable 
where aDate between 
     cast('now' as date) - extract(weekday from cast('now' as date)) --prev sunday 
     and 
     cast('now' as date) - extract(weekday from cast('now' as date)) + 6 --next saturday 
     ; 
+0

太棒了,谢谢! – 2010-11-15 22:45:41

+0

YVW,享受它。 :) – jachguate 2010-11-15 23:20:32

1

我写在MS SQL:

declare @today as datetime 
declare @first_day_of_week datetime 
set @today = convert(varchar, getDate(), 101) 
set @first_day_of_week = dateadd(day, -(DATEPART(WEEKDAY, @today) - 1), @today) 
select * 
from [table] 
where adate between @first_day_of_week and @today 

星期日是一周的开始。

+0

为了提高效率,我做了查询之外的日期计算,这样的计算不重复表中的每一个记录,特别是如果你有大量的记录。 – 2010-11-15 22:34:31

相关问题