我是日期SQL操作中的新手。使用SQL和日期操作
但是,我需要做一個查詢,返回X日期<或30天或類似的記錄過濾器。
我有這個疑問現在:
SELECT nome_prodotto,quantita
FROM prodotti
LEFT JOIN acquisti
ON prodotti.id_prodotto = acquisti.id_prodotto
我的目標是獲得未在上次買30天或類似
我是日期SQL操作中的新手。使用SQL和日期操作
但是,我需要做一個查詢,返回X日期<或30天或類似的記錄過濾器。
我有這個疑問現在:
SELECT nome_prodotto,quantita
FROM prodotti
LEFT JOIN acquisti
ON prodotti.id_prodotto = acquisti.id_prodotto
我的目標是獲得未在上次買30天或類似
如果acquisti
日期字段稱爲date_acquisti
,在最近30天內沒有購買的產品將被查詢這樣的:
SELECT nome_prodotto,quantita
FROM prodotti
LEFT JOIN acquisti
ON (prodotti.id_prodotto = acquisti.id_prodotto
AND acquisti.date_acquisti > CURDATE() - INTERVAL 30 DAY)
where acquisti.id_prodotto is NULL
訣竅是使用JOIN condition
得到只有在產品收購最近30天。由於這是LEFT JOIN
,因此acquisti.id_prodotto
爲NULL
的結果集中的任何行表示該產品未在該期間購買。
可以使用date_add
函數來實現這個
例如:
x_date between DATE_ADD(NOW(), INTERVAL -1 MONTH) and NOW()
WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) =< your_date;
OP希望在過去30天內不購買的產品。這是一個LEFT JOIN。如果你在'WHERE'條款中過濾,那麼完全沒有購買的產品將被排除,但它們應該出現 – 2012-03-06 16:11:47
此外,
where myDate between some_date and some_other_date
可以幫助你在其他類似的情況。
很棒!謝謝!但..ONE問題:爲什麼我需要在使用左連接後使用AND? ..這是我第一次看到連接子句 – Seojudo 2012-03-06 16:42:37
@Seojudo中的AND子句,並且在LEFT JOIN後的AND意味着您要加入id_prodotto和符合日期標準的記錄。你也可以把它放在WHERE子句中 – Taryn 2012-03-06 16:57:05
@bluefeet說了什麼:)我可以使用括號,所以它會更明顯 – 2012-03-06 21:24:42