试过这个
select * from table where timestamp_field between 1330560000 and 1336170420
和这个
select * from table where timestamp_field >=1330560000 and timestamp_field<=1336170420
都返回空结果集。
但是这个
select * from table where timestamp_field >= 1330560000
返回所有行
让事情更荒谬
select * from table where timestamp_field <= 1336170420
返回空结果集。
当然,在1336170420 = 4.may 2012.和1330560000 = 1.march 2012之前,之间和之后都存在时间戳值。
时间戳值正常,至少phpmyadmin显示正确的(人类可读的)日期时间值。 我通过使用
解析字符串来创建时间戳UPDATE table SET timestamp_field = STR_TO_DATE(timestamp_string, '%d.%m.%Y')
猜猜我错过了什么,却找不到什么!?
答案 0 :(得分:6)
MySQL期望date literals,而不是整数:
SELECT *
FROM table
WHERE DATE(timestamp_field) BETWEEN '2012-03-01' AND '2012-05-04'
要使用整数(假设它们是自UNIX纪元以来的秒数),首先使用MySQL的FROM_UNIXTIME()
函数转换它们:
SELECT *
FROM table
WHERE timestamp_field BETWEEN FROM_UNIXTIME(1330560000)
AND FROM_UNIXTIME(1336170420)
或者使用UNIX_TIMESTAMP()
将列转换为UNIX表示形式:
SELECT *
FROM table
WHERE UNIX_TIMESTAMP(timestamp_field) BETWEEN 1330560000 AND 1336170420
答案 1 :(得分:0)
为什么不在使用sql代码时将时间戳from_unixtime(timestamp / 1000)转换为dateTime?你试过吗?