查询周值时,mysql返回垃圾值

时间:2011-05-09 03:02:16

标签: mysql

select (SELECT power FROM newdb.newmeter where date(dt)=curdate() order by dt desc limit 1)
-(select Power from newdb.newmeter where date(dt)=(select date(subdate(now(), interval weekday(now()) day))) limit 0,1) as difference;

以上查询是我的编程的一部分,它给出了从一周的第1天到当周的当天存储的数据的差异。这些查询单独工作如下,并返回:

SELECT power FROM newdb.newmeter where date(dt)=curdate() order by dt desc limit 1;

结果:941690当前时间

select Power from newdb.newmeter where date(dt)=(select date(subdate(now(), interval weekday(now()) day))) limit 0,1;

结果93242.4在本周开始时(或今天作为其星期一的日子)

但是一旦我运行差异查询,这只是导致上述两者之间的差异:848447.8515625

这似乎真的很奇怪,不明白什么是错的呢?请帮忙。

2 个答案:

答案 0 :(得分:0)

您不会在第二个查询中通过dt订购,在周初寻找电源。这意味着您正在选择恰好具有匹配日期的未定义记录。对于简单的选择,表通常按插入顺序排序,但是当优化器认为可以使用其他顺序更快地运行查询时,它可以更改。基本上,如果您没有定义订单,则不关心订单。

答案 1 :(得分:0)

答案中你想要多少个小数位?使用DECIMAL(7,1)代替Power(我假设你想要一个小数位)而不是看看你得到了什么。

我倾向于避免浮动/双打,因为近似值会让你陷入困境。