У меня есть следующий запрос от Group OHLC-Stockmarket Data into multiple timeframes - Mysql.MySql timestamp rounding, затем переформатирование в человекообразном формате
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
затем он использует операцию ПОЛ, которая сделает его 233231576
затем умножает 86400 снова (я предполагаю, что это для того, округление до день)
В итоге я получаю 20151208166400
.
Итак, это 8 декабря 2015 года, но у меня также есть 166400, о котором я понятия не имею, что это такое?
Итак, теперь вторая часть вопроса: как преобразовать это целое число в 2015-12-08 %H:%i:%s
или даже временную метку UTC для синтаксического анализа через Javascript.
Я предполагаю, что временная метка кода - это временная метка unix, а не столбец datetime. –
Конечно! Я был здесь действительно глупым. Если вы хотите поместить 'FLOOR (MIN (unix_timestamp (' timestamp'))/"+ period +") * "+ period +" AS timestamp, 'bad отметьте его как правильный ответ – Gravy