2012-11-07 111 views
2

我是sql查詢的新手,任何人都可以幫我寫下列條件的查詢 我在表「members」中有一個名爲「dob」的列。 注意:dob數據類型是文本。 而像值:本週(即)從2012年7月11日的sql查詢過濾本週日期

dob 
=== 
7-November-1980 
9-November-1981 
10-November-1982 
5-May-1990 

我們得到的生日13-11-2012,我想要得到的結果作爲第3條記錄。爲此,我寫了這樣的查詢

select * from members where dob in('7-November','8-November','9-November','10-November','11-November','12-November','13-November') 

但它從不返回任何結果。任何人都請幫助我,我該如何得到它。非常感謝你。

+0

爲什麼不寫一年也與'IN'運算符中的值 – user1819920

+0

'IN'語句將查找完全匹配。爲什麼將日期格式化爲文本?你能改變格式嗎?如果是這樣,我認爲這會讓這個問題更容易解決。 – JoeFletch

+0

除了更改列的格式之外,沒有其他的改變,因爲它會在我的項目中發生很大的變化,並且可能導致其他模塊無法工作 – Sri

回答

0

您的日期不會存儲在SQLite's supported date formats之一,因此該查詢變得相當複雜:

SELECT * 
FROM members 
WHERE dob LIKE '7-November%' OR 
     dob LIKE '8-November%' OR 
     dob LIKE '9-November%' OR 
     dob LIKE '10-November%' OR 
     dob LIKE '11-November%' OR 
     dob LIKE '12-November%' OR 
     dob LIKE '13-November%' 

如果存儲的具體日期,YYYY-MM-DD格式固定字段寬度,你可以使用一個簡單的查詢像這樣:

SELECT * 
FROM members 
WHERE SUBSTR(dob, 6, 5) BETWEEN '11-07' AND '11-13' 
-1

您正在進行精確的文本匹配,即1980年11月7日不等於7月11日,這就是爲什麼您的查詢沒有返回任何結果。嘗試使用mysql日期函數將文本轉換爲日期時間,從中提取日期 - 月份,然後使用範圍查詢來獲得結果。 檢查http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

+0

這是SQLite,而不是MySQL。 –