mysql - 5分钟吧使用mysql

标签 mysql datetime

我收集了如下格式的报价数据

"instrument","tick_time","ask","bid","askVol","bidVol"
"EUR/USD","2011-07-24 20:00:01","1.43676","1.43666","1.13","4.13"
"EUR/USD","2011-07-24 20:00:02","1.43676","1.43666","1.13","4.5"
"EUR/USD","2011-07-24 20:00:03","1.43674","1.43664","1.13","1.65"
"EUR/USD","2011-07-24 20:00:06","1.43675","1.43665","1.13","5.4"
"EUR/USD","2011-07-24 20:00:06","1.43677","1.43668","1.13","4.28"
"EUR/USD","2011-07-24 20:00:10","1.43676","1.43666","1.13","6.15"
"EUR/USD","2011-07-24 20:00:11","1.43679","1.43669","1.13","4.13"

现在我正在尝试用它创建 5 分钟的柱状图。我尝试了以下 sql。

select    ROUND(tick_time / (60*5)) * 60 * 5 as bar_time,
          max(bid)  as high,
          min(bid) as low
from ticks
group by bar_time

我得到以下数据

"bar_time","high","low"
"20110724199900","1.43669","1.43661"
"20110724200200","1.4366","1.4358"
"20110724200500","1.43625","1.43579"
"20110724200800","1.4365","1.43608"
"20110724201100","1.43645","1.43601"
"20110724201400","1.43624","1.43573"
"20110724201700","1.43619","1.43591"
"20110724202000","1.43644","1.4359"

我该怎么做

  1. 将 bar_time 格式化为日期时间格式?
  2. 将第一个和最后一个数据聚合为列。

最佳答案

其他解决方案:

select 
    date_format( 
        date_sub(
            tick_time, 
            INTERVAL (extract(MINUTE from tick_time) % 5) MINUTE
        ), 
        "%m-%d%Y %H:%i"
    ) as  bar_time, 
    MAX(bid) AS high,
    MIN(bid) AS low
from ticks
group by bar_time

关于mysql - 5分钟吧使用mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6939913/

相关文章:

php - 面向对象和过程的 Mysqli 帮助?

mysql - 如何强制执行自定义 MySQL 列格式

php - 从数据库获取描述时模式不匹配

C# : How to create a constructor with DateTime as parameter? 以及如何使用此构造函数创建对象?

JavaScript 认为是星期四和星期五?

c# - 在 ASP.NET MVC 中获取 DateTime.UtcNow 有多难?

sql - MySql 'Order by Date' 问题

mysql - 全文 'in boolean mode'在mysql中的用法

mysql - 数据库EAV模型,根据搜索记录列表

python - 数据框重复但日期增加