Предложение SQL WHERE для выбора данных за последние 7 дней - PullRequest
0 голосов
/ 08 ноября 2018

Я хочу создать представление на сервере с помощью оператора SELECT и выбрать все записи, созданные за последние 7 дней?

Исходное поле creation_date находится в varchar как '18/11/08', и я использую CONVERT(datetime, creation_date,11) для преобразования его в 2018-11-08 00:00:00.000, но я не знаю, как это сделать в предложении WHERE, поэтому Выбирает только все записи, созданные за последние 7 дней.

Ответы [ 3 ]

0 голосов
/ 08 ноября 2018

Лучшее, что нужно сделать - это правильно сохранить даты в столбце с типом данных Date.
Предполагая, что вы не можете изменить структуру базы данных, вы можете использовать DateDiff с GetDate():

SELECT <ColumnsList>
FROM <TableName>
WHERE DATEDIFF(DAY, CONVERT(datetime, creation_date,11), GETDATE()) <= 7

Конечно, вам нужно заменить <ColumnsList> списком столбцов, а <TableName> - фактическим именем таблицы.

0 голосов
/ 08 ноября 2018

Чтобы получить лучшую производительность, вы должны держать расчет подальше от столбца:

SELECT * 
FROM <YourTable>
WHERE creation_date >= CONVERT(char(8), DATEADD(day,-7, GETDATE()), 11)

Это хорошо сработает из-за формата varchar - ггг / мм / дд. Не работал бы со всеми форматами

0 голосов
/ 08 ноября 2018

используйте условие where, как показано ниже

 select t.* from your_table t
 where CONVERT(datetime, creation_date,11)>= DATEADD(day,-7, GETDATE())
...