php - 查询 MySQL 当前和当天的旧数据,计算变化

标签 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 只股票时遇到了麻烦。

请帮忙! 谢谢!

最佳答案

您的查询中有拼写错误:

在您编写的第一个查询中

WHERE cache time >= NOW()

然后在你的第二个查询中它是

WHERE cachetime >= NOW()

关于php - 查询 MySQL 当前和当天的旧数据,计算变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22876094/

相关文章:

php - 如何确定 WordPress 中的首次点击率?

sql - mysql 在一个表中查询 WHERE 但在另一个表中不查询

mysql - SQL 连接两个查询,同一个表

mysql - SQL LIKE 语句不起作用

mysql - 如何在 mysql 数据库中编辑无效的 UTF-8 字符串

php - 为所有用户的账户充值

php - 使用 PHP 将数据库中的数据输出到下拉框中

php - EC2 上的 CI 对所有请求均给出 404

php - Laravel:如何将查询或阻止查询的尝试时间限制在 30 秒内?

mysql - LoadError 尝试在 Windows、RubyMine IDE 中将 MySQL 与 Ruby on Rails 结合使用