我将时间戳存储在(INT)列中的mysql数据库中,并且我想在日期之间搜索行。任何人都会请求帮助什么应该是Sql查询来查找两个日期之间的行?
输入日期FROM DATE = 15-10-2011
END DATE = 01-11-2011
答案 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
运算符,该运算符选择两个值之间的数据范围。值可以是数字,文本或日期。
答案 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'));
我在日期输入方面犯了一个错误但已修复。