的WHERE
條款是錯誤的,它必須遵循表引用和JOIN操作。
事情是這樣的:
FROM tartikel p1
JOIN tartikelpict p2
ON p1.kArtikel = p2.kArtikel
AND p2.nNr = 1
WHERE p1.dErstellt >= DATE(NOW()) - INTERVAL 7 DAY
ORDER BY p1.kArtikel DESC
編輯(三加年後)
以上基本上回答了這個問題:「我想一個WHERE子句添加到我的查詢和現在該查詢返回一個錯誤,我該如何解決它?「
至於有關書面檢查的「過去7天」的日期範圍條件下,問題...
這真的取決於解釋說明,表中的列的數據類型是什麼(DATE或DATETIME)以及可用的數據......應該返回的內容。總結:一般的方法是爲日期/日期時間範圍和該範圍的「結束」標識「開始」,並在查詢中引用它們。讓我們考慮一些更簡單的...所有行爲「昨天」。
如果我們的列是DATE類型的。在我們將一個表達式併入查詢之前,我們可以用一個簡單的SELECT
SELECT DATE(NOW()) + INTERVAL -1 DAY
進行測試,並驗證返回的結果是我們所期望的。然後,我們可以使用相同的表達在WHERE子句,比較它與DATE列是這樣的:
WHERE datecol = DATE(NOW()) + INTERVAL -1 DAY
對於DATETIME或TIMESTAMP列,我們可以使用>=
和<
不等式比較,以指定一個範圍
WHERE datetimecol >= DATE(NOW()) + INTERVAL -1 DAY
AND datetimecol < DATE(NOW()) + INTERVAL 0 DAY
對於「過去7天」,我們需要知道從現在起7天以後的這個意思......例如在過去的7 * 24小時,包括在比較的時候分量,...
WHERE datetimecol >= NOW() + INTERVAL -7 DAY
AND datetimecol < NOW() + INTERVAL 0 DAY
在過去7個完整的天,不包括
WHERE datetimecol >= DATE(NOW()) + INTERVAL -7 DAY
AND datetimecol < DATE(NOW()) + INTERVAL 0 DAY
或過去的六年完成日,加今天到目前爲止今天...
WHERE datetimecol >= DATE(NOW()) + INTERVAL -6 DAY
AND datetimecol < NOW() + INTERVAL 0 DAY
我建議測試在右側的表達式,在SELECT語句中,我們可以代替使用用戶定義的變量NOW()進行測試,而不是被捆綁到什麼NOW()返回,所以我們可以測試邊界,跨越周/月/年邊界等等。
SET @clock = '2017-11-17 11:47:47' ;
SELECT DATE(@clock)
, DATE(@clock) + INTERVAL -7 DAY
, @clock + INTERVAL -6 DAY
一旦我們有返回的工作價值觀的表達「開始」和「結束」爲我們的具體使用情況,就是我們所說的「過去7天」,我們可以使用這些表達在範圍比較WHERE子句。
(有些開發人員喜歡使用DATE_ADD
和DATE_SUB
職能到位+ INTERVAL val DAY/HOUR/MINUTE/MONTH/YEAR
語法。
和MySQL提供了一些方便的功能與DATE,DATETIME和TIMESTAMP數據類型的... DATE工作,LAST_DAY,
有些人希望能夠計算在SQL查詢的開始和其他代碼結束,供應字符串字面量,使得提交給數據庫的查詢是
WHERE datetimecol >= '2017-11-10 00:00'
AND datetimecol < '2017-11-17 00:00'
而且這種方法也適用。 (我更傾向於將那些字符串文字明確投進去DATETIME,無論是與CAST,轉換或只是+間隔招...
WHERE datetimecol >= '2017-11-10 00:00' + INTERVAL 0 SECOND
AND datetimecol < '2017-11-17 00:00' + INTERVAL 0 SECOND
上述所有假設我們現在存儲「日期」,在適當的DATE,DATETIME和/或TIMESTAMP數據類型,並且不將它們以各種格式(例如'dd/mm/yyyy'
,m/d/yyyy
,朱利安日期)或以零星非規範格式存儲爲字符串,或者作爲從該紀元開始以來的秒數,這個答案需要更長的時間
那就是我讀過的文章,並在我的代碼中使用 – karadayi
你不想要'不要解釋你得到了什麼錯誤,或者說這不起作用。除非這個問題得到改善,否則將會關閉一個重複的問題。 –
我沒有得到任何輸出(沒有錯誤,沒有結果)如果我用'DATE(dErstellt)>(NOW() - INTERVAL 7 DAY)' – karadayi