2015-08-06 2 views
5

У меня есть SQL-скрипт, который выбирает все с текущего дня.Дата получения 3 дней назад

SELECT [ClientID] from [logs] where Date > CONVERT (date, SYSDATETIME()) 

Дата типа DateTime.

Как получить все за последние 3 дня? Полагаю, мне нужно вычесть 3 дня из результата функции SYSDATETIME(), но как?

+1

DATEADD (ДЕНЬ, -3, CONVERT (дата, SYSDATETIME())) – mxix

ответ

6
SELECT [ClientID] from [logs] where Date > DATEADD(day, -3, CONVERT (date, SYSDATETIME())) 
+0

@vico привет , вы нашли ответ? – Backs

1

Использование BETWEEN

SELECT ClientID 
FROM logs 
WHERE Date BETWEEN SYSDATETIME() AND SYSDATETIME() - 3 
+0

получил ошибку «Столкновение типа операнд: datetime2 несовместимо с int» – vico

+0

См. Ответ здесь относительно использования BETWEEN и даты: http://stackoverflow.com/a/25564544/4654008 – Thomas

0

Использование BETWEEN приятно. Я также предпочитаю функцию DATEADD. Но имейте в виду, что функция SYSDATETIME (или я бы GETDATE()) также включает время, которое будет означать, что события до текущего времени, но в течение трех дней могут не включаться. Возможно, вам придется преобразовать обе стороны в дату вместо даты и времени.

2

Для использования туздо это:

SELECT DATE_ADD(CURRENT_DATE, INTERVAL - 3 DAY); 
+2

sql-server не является mysql – Backs

1

Использование GETDATE(): Да, он получает дату от системы!

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

Запрос:

SELECT [ClientID] from [logs] where (Date > GETDATE() - 3) 

Подробнее Ссылка:

GETDATE Detailed Documentation

Смежные вопросы