SQL - только выбирать записи по выходным - PullRequest
4 голосов
/ 06 августа 2010

Мне нужно написать оператор SQL Select, чтобы выбрать все записи, где DateCreated приходится на выходные в течение последних 4 недель.Я знаю, что могу сделать это, жестко запрограммировав выборку, подобную приведенной ниже.Но мне было интересно, есть ли более простой способ использовать функции даты T-sql.

SELECT * FROM audit_table 
WHERE DateCreated BETWEEN '07-31-2010 00:00:00' AND '08-01-2010 23:59:59'
  OR DateCreated BETWEEN '07-24-2010 00:00:00' AND '07-25-2010 23:59:59'
  OR DateCreated BETWEEN '07-17-2010 00:00:00' AND '07-18-2010 23:59:59'
  OR DateCreated BETWEEN '07-10-2010 00:00:00' AND '07-11-2010 23:59:59'

Ответы [ 3 ]

13 голосов
/ 06 августа 2010

попробуйте

where DateCreated  >= DATEADD(DD, DATEDIFF(dd, 0, DATEADD(WK,-4,GETDATE()))+0, 0)
and datepart(dw,DateCreated) in (1,7) -- Sat and Sun only

[Редактировать] см. Комментарий о datefirst [/ Редактировать]

3 голосов
/ 06 августа 2010

Проверьте второй ответ на GETDATE в прошлом месяце . Он содержит довольно подробное описание различных способов получения дат из SQL.

В частности, он перечисляет «dateadd (ms, -3, dateadd (wk, datediff (wk, 0, getdate ()) + 1, 0))» как способ получить эти выходные. Это можно легко перевести, чтобы получить нужные вам выходные.

0 голосов
/ 06 августа 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...