2017-05-31 21 views
1

說我有一個表項MYSQL:選擇不包含在某個日期

CustID | OrderDate 
1  | 2017-05-30 05:15:18 
2  | 2017-04-18 05:15:18 
2  | 2017-04-15 05:15:18 
3  | 2017-02-17 05:15:18 
4  | 2017-05-29 05:15:18 
4  | 2017-03-24 05:15:18 

任何我只想要回背不包含訂單日期更新超過30天(今天是2017年CustIDs -05-30)。所以,上面的例子只會返回2和3

我:

SELECT DISTINCT CustID 
FROM TABLE 
WHERE NOT EXISTS (SELECT CustID FROM TABLE WHERE OrderDate > DATE_ADD(NOW(),INTERVAL-30DAY)); 

但我只得到語法錯誤。

再次感謝,我對SQL很有新意。

+0

你能舉一些具體的日期和你需要的輸出給你的例子嗎? –

+0

請接受下面的答案,如果它幫助你實現你正在尋找的東西。這樣,它不會在線程中丟失,並會幫助其他有類似問題的人:) –

回答

1

你可以試試這個:

select distinct CustIDs from YourTableName where OrderDate < now() - interval 30 day; 

PS:在您的查詢,你使用FROM TABLE - 這是不對的,你必須使用FROM {YourTableName},其中{YourTableName}是在數據庫中的表的真實姓名,像(客戶,客戶等)

0

,因爲你缺少的重要組成部分,where子句:and t1.id = t2.id

select distinct CustID from table t1 where not exists (select 1 from table t2 where [whatever_your_conditions_are] and t1.id = t2.id);

與你相似的表...它只是日期,而不是時間戳(和where子句中輕鬆日期條件,只是爲了簡單起見):

enter image description here

選擇其最新的用戶> CURRENT_DATE(這是你的情況order_date的):

enter image description here

0

至於我明白你的問題。

您的查詢將是:

SELECT DISTINCT CustID FROM TABLE WHERE OrderDate < GETDATE()-30

讓我知道,如果你需要在Where條款像<>OrderDate變化。