SQL - суммирование содержимого поля за день на основе временной метки unix

Может ли кто-нибудь помочь мне здесь, прошло много времени с тех пор, как я играл с sql. :)

У меня простой стол;

CREATE TABLE IF NOT EXISTS `consignmentstable` (
  `checktime` int(11) NOT NULL,
  `consignments` smallint(6) NOT NULL
)

Эта таблица будет заполняться несколько раз в день.

«checktime» будет заполнено меткой времени unix (поле по-прежнему должно быть int), а «consignments» будет заполнено INT.

Мне нужен sql, который суммирует «отгрузки» за каждый день (контрольная дата).

В следующем примере данные находятся в диапазоне от 2016-10-01 до 2016-10-06.

checktime consignments
1475280000 528
1475366400 459
1475452800 10080
1475539200 7728
1475625600 7382
1475712000 6911
1475712015 11111

Два последних из них относятся к 2016-10-06, и я хотел бы, чтобы в моих результатах были обобщены данные о партиях за дату, поскольку я представлю данные в виде графика. Другими словами, вывод для даты 2016-10-06 выше должен быть 18022 (6911 + 11111).

Возможно ли это, учитывая, что мне нужен вывод INT, а не какая-либо форма DATE? Если так, я хотел бы получить помощь! :)


person RuneM    schedule 25.10.2016    source источник


Ответы (1)


Вы хотите from_unixtime():

select date(from_unixtime(checktime)) as dte, sum(consignments)
from consignmentstable
group by date(from_unixtime(checktime));

Это позволяет представить дату как дату.

Если вам действительно нужна метка времени unix, вы можете преобразовать ее обратно с помощью unix_timestamp().

person Gordon Linoff    schedule 25.10.2016