узнайте разницу в дате - PullRequest
       2

узнайте разницу в дате

0 голосов
/ 29 сентября 2018

У меня есть такая таблица:

CREATE TABLE `item_zone` (
    `item`  INTEGER NOT NULL,
    `zone`  INTEGER NOT NULL,
    `action_date`   TEXT NOT NULL,
    `price` INTEGER NOT NULL,
    `days_price_established`    INTEGER
);
INSERT INTO `item_zone` VALUES (50374500, 1, 1512248400, 5, 10);
INSERT INTO `item_zone` VALUES (50374500, 1, 1513112400, 9, 1);
INSERT INTO `item_zone` VALUES (50374500, 1, 1513198800, 8, null);

Таблица не имеет первичного ключа, но я думаю, что можно использовать oid.В action_date он хранит UNIX-подобные данные, а в days_price_established он хранит информацию о том, сколько дней осталось от последнего изменения цены (action_data (n) - action_data (n-1). Мне нужно показать days_price_estableshed, но я не знаю, как свойство делать математику сдаты.

1 Ответ

0 голосов
/ 29 сентября 2018

Чтобы отобразить дату изменения цены:

select strftime('%d-%m-%Y', datetime(action_date-(86400*days_price_established), 'unixepoch')) from item_zone;

Чтобы отобразить дату последнего изменения цены:

select strftime('%d-%m-%Y', datetime(action_date-(86400*days_price_established), 'unixepoch')) from item_zone;

Для расчета days_price_established

select item,action_date,round((iz1.action_date-(SELECT iz2.action_date FROM item_zone iz2 WHERE iz2.oid<iz1.oid AND iz2.item=iz1.item ORDER by iz2.oid DESC limit 1))/86400) from item_zone iz1 order by iz1.oid;

Для обновления days_price_established внутри таблицы, если она пуста

update item_zone set days_price_established=(select round((iz1.action_date-(SELECT iz2.action_date FROM item_zone iz2 WHERE iz2.oid<iz1.oid AND iz2.item=iz1.item ORDER by iz2.oid DESC limit 1))/86400) from item_zone iz1 WHERE iz1.oid=item_zone.oid) WHERE days_price_established IS NULL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...