2011-10-01 127 views
1

im將時間戳存儲在(INT)列中的mysql數據庫中,並且我想在日期之間搜索行。任何人都可以幫助什麼應該是Sql查詢來查找兩個日期之間的行?日期搜索Sql查詢

日期被輸入像

FROM DATE = 15-10-2011  

END DATE = 01-11-2011 
+0

這是不夠的信息...你怎麼從日期轉換爲整數?這些Julian約會? – Yahia

+0

所以,你問如何將你的數據轉換成時間戳或什麼? –

回答

0

可以使用BETWEEN操作,其選擇的範圍內的兩個值之間的數據。這些值可以是數字,文本或日期。

你可以看到有:
http://w3schools.com/sql/sql_between.asp

+2

它被認爲是不好的方式在連接t0 w3schools,因爲他們的手冊是越野車和過時的stackoverflow。 –

+0

不好意思。我不會再使用它。 – tucnak

+1

請參閱http://w3fools.com/ – 2012-01-10 16:46:44

-1

我想請您設置的數據類型爲時間戳/日期戳&然後

//php code 
$date1=date ('Y-m-d' , strtotime ("15-10-2011")); 
$date2=date ('Y-m-d' , strtotime ("01-11-2011")); 
//sql code 
SELECT * FROM tbl_mytbl WHERE DATE(attr_date) <'$date2' AND DATE(attr_date) >'$date1' 
+0

誰-1我的答案plz解釋我的錯在哪裏。 – iThink

+1

運行你的代碼,看看 –

+0

是的,我做了相當長的一段時間後,我知道它的工作原理 – iThink

1

這取決於你用什麼算法將日期字符串轉換爲值爲int

如果algoritm是mototonic,例如:如果一天(比如說15-10-2011)轉化爲n(比如說5037),然後第二天(16-10-2011)總是被轉換到n+1(所以5038在這個例子中)。

,那麼你可以只使用:

WHERE IntField BETWEEN MySpecialConvertDateToIntFunction('15-10-2011') 
        AND MySpecialConvertDateToIntFunction('01-11-2011') 

如果你的字段存儲不同timsetamps爲不同的整數(和轉換是單調的),你合ULD稍微改變上面的代碼:

WHERE IntField >= MySpecial...Function('15-10-2011') 
    AND IntField < MySpecial...Function('02-11-2011') --- notice the date+1 

但通常最好使用MySQL DATE類型的字段存儲日期。除非您想要在1000之前或9999之外存儲日期。

如果要存儲時間戳,還有TIMESTAMP類型。閱讀
MySQL docs: DATETIME, DATE, and TIMESTAMP Types

-1

你可以使用mysql FROM_UNIXTIME功能dev.mysql.com - function from_unixtime

SELECT * 
FROM 'table' 
WHERE FROM_UNIXTIME(intTimestamp) 
BETWEEN 
date ('Y-m-d' , strtotime ('15-10-2011')) 
AND ('Y-m-d' , strtotime ('01-11-2011')); 

我現在已經把日期輸入錯誤,但有固定的。

+0

爲什麼倒票? – Mark

+0

我沒有downvoted,但可能是因爲你使用了''15 -10-2011''而不是'2011-10-15''格式。 MySQL不夠聰明來識別這兩種格式,而不是不告訴它使用哪一種。 –

+0

謝謝,我已經修復上面。 – Mark