Выберите строки с полем даты, имеющим значения в течение этой недели - PullRequest
1 голос
/ 16 ноября 2010

Я пытаюсь выбрать все строки в таблице, где поле даты имеет значения в течение текущей недели. Я хочу строки с понедельника текущей недели до текущего дня.

Пример:

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 ]

2 голосов
/ 16 ноября 2010

Это будет работать в неделю с воскресенья по субботу. Вы должны адаптировать его, если вы хотите недели с понедельника по воскресенье:

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
         ;
1 голос
/ 16 ноября 2010

Я написал это в 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

Воскресенье - начало недели.

...