【发布时间】:2011-06-06 11:28:19
【问题描述】:
我正在使用 MySQL 查询来提取一系列日期时间作为 Unix 时间戳(因为我会将它们转换为 Javascript 时间)。我按“FROM_UNIXTIME”分组如下:
SELECT
UNIX_TIMESTAMP(DateAndTime) as x,
Sum(If(Pass='Pass',1,0)) AS y,
Sum(If(Pass='Fail',1,0)) AS z,
Sum(If(Pass='Fail',1,0))/(Sum(If(Pass='Pass',1,0))+Sum(If(Pass='Fail',1,0))) AS a,
cases.primaryApp
FROM casehistory, cases
WHERE DATE_SUB(CURDATE(),INTERVAL 80 DAY) <= DateAndTime
AND cases.caseNumber = casehistory.caseNumber
AND cases.primaryApp = 'Promo'
GROUP BY FROM_UNIXTIME(x, '%Y-%m-%d')
虽然我希望我的时间戳以均匀间隔(即每天/组之间的相同时间量)返回,但我得到以下系列:
1300488140, 1300501520, 1300625099, 1300699980
查询中的所有其他数据都是正确的,但由于时间戳的间距不规则,基于这些时间戳的条形图看起来很糟糕。也许我在应用分组的方式上做错了什么?
感谢您的回复。我的查询“有意义”,因为它产生了可以绘制的信息(分组是在日期和时间值的 x 别名上完成的),但问题是从数据库中提取 Unix 时间戳并按天分组会返回一系列时间戳它们之间的距离不相等。
我通过从 datetime MySQL 字段中仅提取日期(不包括时间)来解决这个问题,然后 - 在 PHP 中 - 将一个空时间连接到日期,将结果字符串转换为时间,然后将整个 shebang 乘以 1000返回图表所需的 Javascript 时间,如下所示:
x = x . ' 00:00:00';
x = strtotime(x) * 1000;
答案让我走上了正轨;我会接受的。我的图表现在看起来很完美。
【问题讨论】:
标签: mysql sql datetime group-by timestamp