我有这样的桌子:
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_built中,它存储上次价格更改后剩余的天数(action_data(n)-action_data(n-1)。我需要显示days_price_estableshed,但我不知道如何使用属性进行数学运算日期。
答案 0 :(得分:0)
显示价格修改日期:
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;
要计算已建立的天数
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_price为空,则更新
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;