查询MySQL当前和日期旧数据,计算更改

时间:2014-04-05 03:08:38

标签: php mysql sql

我正在构建一个我最容易描述为股票市场数据跟踪应用程序的应用程序(它不完全是这样)。

我有一张名为' market_cache'的表。每10分钟,脚本会使用最新的市场数据加载该表,为每个股票代码创建一个新行(当然还会留下时间戳)。我跟踪了114个股票代码,因此,每次执行此脚本时,都会添加114个新行(时间戳在一秒或两个之内)。

我的目标是建立一个表格,列出所有这些股票的当前数据和24小时的百分比变化,所以为了计算变化,我需要第二个查询来提取相同的数据,但是从1天前开始。

以下是我使用的查询:

对于最新的数据集:

 SELECT DISTINCT(sym), trade_to, name, marketid, lasttrade, volume, cachetime FROM market_cache WHERE cachetime >= NOW() - INTERVAL 10 MINUTE ORDER BY name ASC LIMIT 114

我正在使用DISTINCT(sym)调用来确保相同的股票代码在同一查询中没有被提取两次,并设置时间间隔以确保我只获得有的行在最后10分钟写的。此查询似乎完全按照我的意愿工作。

我的第二个查询,用于提取更改数据,如下所示:

 SELECT DISTINCT(sym), trade_to, name, marketid, lasttrade, volume, cachetime FROM market_cache WHERE cachetime >= NOW() - INTERVAL 1450 MINUTE ORDER BY name ASC LIMIT 114

此查询几乎与上面的查询相同,只是间隔1450分钟(10天+10分钟)不同。但是,此查询不起作用,它只生成第一个股票代码(1个结果)。

如果我尝试仅为一个股票代码提取数据并获取该符号的一天数据来计算%变化,那么我可以做到这一点没问题。但是,我在尝试同时查询所有114种股票时遇到了麻烦,然后又从一天前查询了另外一组114种股票。

请帮忙! 谢谢!

2 个答案:

答案 0 :(得分:1)

您的查询中有拼写错误:

在您编写的第一个查询中

  

缓存时间> = NOW()

然后在你的第二个查询中

  

缓存时间> = NOW()

答案 1 :(得分:0)

你的'where'条款不对吗?

你不想要这样的东西:

WHERE cachetime >= NOW() - INTERVAL 1450 MINUTE
      and cachetime <= NOW() - INTERVAL 1440 MINUTE