SQL Выберите данные к этой неделе - PullRequest
2 голосов
/ 27 мая 2010

Привет, как мне получить данные за текущую неделю?

Выберите * из транзакции, где транзакцияДата ....

Ответы [ 6 ]

7 голосов
/ 27 мая 2010

В SQL Server в зависимости от недели года. Пожалуйста, смотрите DATEPART для @@ DATEFIRST и т. Д. Например, это все сделки с воскресенья в США / Великобритании:

WHERE DATEPART(week, transactionDate) = DATEPART(week, GETDATE())

Edit:

Для доступа используйте this DatePart и используйте "ww" для нужной части даты. В ответ на комментарий «неделя» не является переменной; это бит даты, которую вы хотите

Итак:

WHERE DatePart("ww", transactionDate) = DatePart("ww", GETDATE())
1 голос
/ 27 мая 2010

В Microsoft Access

Последний n дней:

SELECT *
FROM Transaction 
WHERE transactionDate >=Date()-7

Если у вас есть индексы и подходит для этого типа разницы, это будет быстрее, потому что это sargable

Разница между неделями:

SELECT *
FROM Transaction 
WHERE DateDiff("w",[transactionDate],Date())=0

Кстати, считается плохой практикой использовать *

DateDiff: http://office.microsoft.com/en-us/access/ha012288111033.aspx

0 голосов
/ 27 мая 2010

В Access, если вы хотите выполнить запрос, чтобы найти записи, попадающие на текущую неделю, используйте

SELECT *
FROM table
WHERE table.DateField Between (Date()-Weekday(Date())+1) And (Date()-Weekday(Date())+7);

Это работает с воскресенья по субботу. Вместо этого используйте +2 и +6, если вы хотите рабочую неделю.

0 голосов
/ 27 мая 2010

mySQL (стандартная отметка даты)

SELECT *
FROM Transaction
WHERE WEEK(NOW())=WEEK(transactionDate);

MySQL (отметка времени Unix)

SELECT *
FROM Transaction
WHERE WEEK(NOW())=WEEK(FROM_UNIXTIME(transactionDate));

Бит неоптимизированного запроса. Может быть более эффективным способом.

Примечание: это не скользящие 7 дней. Просто текущая неделя года.

РЕДАКТИРОВАТЬ: Извините, я не увидел тег ms-access. игнорировать все это: |

0 голосов
/ 27 мая 2010

В IBM DB2

SELECT *
FROM Transaction
WHERE transactionDate BETWEEN CURRENT TIMESTAMP - 7 days AND CURRENT TIMESTAMP;
0 голосов
/ 27 мая 2010

Простой, но портативный:

SELECT *
  FROM Transaction
    WHERE transactionDate >= ?
      AND transactionDate <= ?

Рассчитайте два параметра в своем коде на стороне сервера для любого определения «недели», которое вам нужно.

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