我正在尝试在今天和一周之前显示我的下载查询,这是我的查询
SELECT
COUNT(1) AS d_count,
d_timestamp
FROM dl_table
WHERE id = 'someid'
AND d_timestamp BETWEEN 1389830400 AND 1389260583
GROUP BY d_timestamp
ORDER BY d_timestamp ASC LIMIT 7;
上面的查询无法正常工作并返回一个空列或者返回7列{1}}中有1个值,这是完全错误的!问题在哪里?
有什么想法吗?
注意:
d_coun
等于今天的时间戳,我通过1389830400
得到它。
strtotime("today");
等于-1周前的时间戳,我通过1389260583
获得。
strtotime("-7 day");
是一个整数列。
答案 0 :(得分:2)
SELECT
COUNT(id) AS downloads,
FROM_UNXTIME(d_timestamp, '%Y-%m-%d') AS day
FROM dl_table
WHERE id = 'someid'
AND d_timestamp BETWEEN 1389830400 AND 1389260583
GROUP BY day
ORDER BY day
这应该有效。格式化时间戳更具可读性,即使时间戳与00:00完全不匹配(无论出于何种原因),它也可以100%确定您按天分组。
答案 1 :(得分:0)
尝试此查询,因为d_timestamp列值似乎存在问题
SELECT COUNT(1) AS d_count, d_timestamp FROM dl_table WHERE id = 'someid'
AND CAST(d_timestamp AS UNSIGNED) BETWEEN 1389830400 AND 1389260583
GROUP BY d_timestamp ORDER BY d_timestamp ASC LIMIT 7;