2011-10-01 158 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