2012-04-09 49 views
-1

的時間差如何獲得總筆數我要做一個mysql語句獲取具有從今天的超過7日期的差異總項目(指今天 - 7)具有超過7

這是我當前的語句:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'complaint_regdate >= DATE_SUB(curdate(),INTERVAL 7 day)' at line 1

+0

你目前的陳述有什麼問題? – 2012-04-09 09:54:45

+0

我編輯了我的問題與錯誤 – 2012-04-09 09:55:27

+0

在您的問題中的查詢邏輯上是錯誤的(它不會做你要求做的,這應該是顯而易見的空白後的變化),幷包含一個語法錯誤,你應該修復_before_問一個問題。而且,你只是編輯了插入缺少的AND的問題,這使得錯誤消息完全不相關,因爲它不能來自問題中的查詢。 – AD7six 2012-04-09 10:10:50

回答

4

可以使用運營商之間的這種

SELECT COUNT(*) 
FROM complaints 
WHERE complaint_status = 'OPEN' 
    AND complaint_regdate < (CURDATE() - INTERVAL 7 day) 

注意你不需要DATE_SUB功能,你可以只使用一個正常減法。 這些只有在您的complaint_regdate是DATE列時纔有效。如果是DATETIME列,則需要使用NOW()而不是CURDATE()或僅提取字段值的日期標記。

+0

它在7天內給我不超過7天。 – 2012-04-09 10:05:20

+0

@AbhilashShukla對不起,誤讀的問題,已經更新了答案。 – liquorvicar 2012-04-09 10:06:59

+0

非常感謝。另外,如果我想要這樣做一個月,我應該添加「INTERVAL 30天」還是其他一些有效的方式來執行它 – 2012-04-09 10:08:54

4

你缺少你的SQL AND運算符:

SELECT 
    COUNT(*) 
FROM 
    complaints 
WHERE 
    complaint_status = 'OPEN' AND 
    complaint_regdate <= curdate() 
    complaint_regdate >= DATE_SUB(curdate(),INTERVAL 7 day) 

我得到這個錯誤。

SELECT COUNT(*) FROM complaints WHERE complaint_status = 'OPEN' AND complaint_regdate <= curdate() AND complaint_regdate >= DATE_SUB(curdate(),INTERVAL 7 day) 
+0

是否超過過去7天? – 2012-04-09 10:02:48

+0

它在7天內給我不超過7天。 – 2012-04-09 10:05:25

+1

@AbhilashShukla - 你錯過了這個答案的重點。它修復了你的一個錯誤;如果你有其他錯誤,你應該回應討論它們的答案。 (當然,一旦你解決了一個錯誤,你應該再試一次,看看你是否可以自己修復它 - 這是學習的最好方法!)。 – halfer 2012-04-09 10:08:41

1

聽起來好像您要求查詢查找日期超過7天的計數。上面列出的當前查詢顯示了最近7天內所有內容的計數。因此,這裏是超過7天過去查詢:

SELECT COUNT(*) FROM complaints WHERE complaint_status = 'OPEN' AND complaint_regdate < DATE_SUB(curdate(),INTERVAL 7 day) 
+0

我收到這個錯誤:'你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第1行處使用接近'complaint_regdate 2012-04-09 09:58:10

+1

修復了語法錯誤。 – davidethell 2012-04-09 11:38:33