2013-08-28 2 views
1

Я бегу этот запрос:SQL - Получить данные вчера и день до

select member, customerinfo.customerid -- ...other irrelevant columns... 
from customerinfo, addressinfo 
    where customerinfo.customerid = addressinfo.customerid 
    and MEMBER = (Date(GetDate()-1)) 
    and addressinfo.addresstype = 's' 

я это, очевидно, дает мне данные, если член = вчера.

Мой вопрос в том, как я могу структурировать запрос, чтобы предоставить мне данные, если Member = последние 2 дня (вчера и за день до этого)?

+1

Внимание! Обнаружен старинный JOIN. Используйте синтаксис INNER JOIN. –

+0

Насколько интуитивно понятно, что 'MEMBER' является столбцом datetime? Кроме того, как этот запрос дает вам что-нибудь? Я получаю «Msg 195, уровень 15, состояние 10, строка 16 /« DATE »не является признанным встроенным именем функции.« –

+1

И, наконец, всегда указывайте, какие СУБД вы используете, поэтому вы не тратите народное время. 'sql' - слишком общий тег - мы пишем SQL в 20 + разных диалектах. –

ответ

6
MEMBER BETWEEN (GETDATE() -2) AND (GETDATE() -1) 

В SQL Server можно также попробовать:

MEMBER BETWEEN DATEADD(day, -2, GETDATE()) AND DATEADD(day, -1, GETDATE()) 
+1

Кажется, что это работает: MEMBER BETWEEN (Date (GetDate() - 2)) AND (Date (GetDate() - 1)) – JeffreyLazo

+1

Какая версия SQL Server - это все, с кем вы работаете, где 'DATE()' - в функции? Я так сильно смущен. –

+0

@AaronBertrand, в начале вопрос не был помечен SQL SERVER. Позднее он был добавлен после EDIT, я не думаю, что это правильно. – Habib

1

Изменить запрос в:

SELECT member, customerinfo.customerid, ContactName, Address1, 
Address2, City, State, ZIP, Country from customerinfo, addressinfo 
WHERE customerinfo.customerid = addressinfo.customerid 
and MEMBER >= (Date(GetDate()-2)) AND MEMBER <= (Date(GetDate()-1)) 
and addressinfo.addresstype = 's' 
Смежные вопросы