2015-02-24 3 views
-2

Я пытаюсь получить все записи за последние 2 дня, но исключая сегодняшнюю дату. Я хочу получить имя и место, где дата отправки включена только за последние 2 дня. Тип данных для date_submitted - datetime.Как получить все записи за последние 2 дня в SQL

select name, location 
from myTable 
where date_submitted in (select CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)) 
+1

Зачем заказывать дату как поплавок? – Zane

+0

@ Zane: Кажется, лучший способ урезать дату: http://stackoverflow.com/a/923322/993547. –

+0

Ваша ссылка показывает, что 'Cast (GetDate() as Date) является предпочтительным, поскольку оно документировано для правильной работы и не зависит от текущего двоичного формата для' DATETIME'. Также ясно, что ваши намерения и ясность имеют большое значение в реальном мире. – HABO

ответ

4

Не используйте in, используйте >=. Вы также можете использовать dateadd:

where date_submitted >= cast(dateadd(day, -2, getdate()) as date) 
and date_submitted < cast(getdate() as date) 
+0

Как это обрабатывается «исключая сегодняшнюю дату»? – HABO

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