【发布时间】:2015-12-28 12:51:30
【问题描述】:
我有来自Group OHLC-Stockmarket Data into multiple timeframes - Mysql 的以下查询。
SELECT
FLOOR(MIN(`timestamp`)/"+period+")*"+period+" AS timestamp,
SUM(amount) AS volume,
SUM(price*amount)/sum(amount) AS wavg_price,
SUBSTRING_INDEX(MIN(CONCAT(`timestamp`, '_', price)), '_', -1) AS `open`,
MAX(price) AS high,
MIN(price) AS low,
SUBSTRING_INDEX(MAX(CONCAT(`timestamp`, '_', price)), '_', -1) AS `close`
FROM transactions_history -- this table has 3 columns (timestamp, amount, price)
GROUP BY FLOOR(`timestamp`/"+period+")
ORDER BY timestamp
在我的选择语句中,FLOOR(MIN(timestamp)/"+period+")*"+period+" AS timestamp,
- 我试图了解它在做什么。和
- 我需要将其转换回 mysql 日期/时间
Y-M-D H:i:s字符串或 UTC 时间戳,以便通过 javascript 进行解析。
假设+period+ 是 86400(一天中的秒数)
假设时间戳是'2015-12-08 20:58:58'
据我所知,它采用时间戳,内部存储为整数并除以 86400。
'2015-12-08 20:58:58' / 86400 = 233231576.4566898000
然后它使用 FLOOR 操作将其变为 233231576 然后再次乘以 86400(我假设这是为了确保四舍五入到当天)
我最终得到20151208166400。
那是 2015 年 12 月 8 日,但我也有 166400,我不知道它是什么?
所以现在问题的第二部分是,如何将此整数转换为 2015-12-08 %H:%i:%s 甚至是 UTC 时间戳,以便通过 Javascript 进行解析。
【问题讨论】:
-
我猜代码中的时间戳是unix时间戳,而不是日期时间列。
-
当然!我在这里真的很笨。如果您想放置
FLOOR(MIN(unix_timestamp(timestamp))/"+period+")*"+period+" AS timestamp,,请将其标记为正确答案