日期搜索Sql查询

时间:2011-10-01 18:30:10

标签: php mysql sql

我将时间戳存储在(INT)列中的mysql数据库中,并且我想在日期之间搜索行。任何人都会请求帮助什么应该是Sql查询来查找两个日期之间的行?

输入日期

FROM DATE = 15-10-2011    

END DATE = 01-11-2011

4 个答案:

答案 0 :(得分:1)

这取决于您使用什么算法将日期字符串转换为int值。

如果算法是超音速的,例如:如果一天(比如15-10-2011)转换为n(比如5037),那么第二天(16-10-2011 )总是转换为n+1(在此示例中为5038。)

然后你可以使用:

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

如果您的字段将不同的timsetamps存储为不同的整数(且转换是单调的),您可以稍微更改上面的代码:

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 :(得分:0)

您可以使用BETWEEN运算符,该运算符选择两个值之间的数据范围。值可以是数字,文本或日期。

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

答案 2 :(得分:-1)

我会要求您将数据类型设置为timestamp / datestamp&amp;然后

//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'

答案 3 :(得分:-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'));

我在日期输入方面犯了一个错误但已修复。