我有一个表(funny_quotes),该表具有名为quote_date的列,并且它以Unix纪元时间(秒)存储数据
我想运行查询以仅返回最近3天中该表中的数据(funny_quotes)。
我在postgres中本地创建了一个表,但是无法将日期存储为大纪元时间,只能将它们存储为时间戳记值
从funny_quotes中选择*,其中quote_date>(now()-间隔“ 3天”)
答案 0 :(得分:1)
您应该将等式的右侧修改为epoch以便进行比较:
With tbl as (
select * from (values
-- source data
(0 , 121,'Feb',100)
,(1 , 121,'Jan',87 )
,(2 , 121,'Mar',95 )
,(3 , 121,'May',105)
,(4 , 121,'Apr',100)
,(5 , 321,'Jan',100)
,(6 , 321,'Feb',87 )
,(7 , 321,'Mar',95 )
,(8 , 321,'Apr',105)
,(9 , 321,'May',110)
,(10, 597,'Jan',100)
,(11, 597,'Feb',105)
,(12, 597,'Mar',95 )
,(13, 597,'Apr',100)
,(14, 597,'May',110)
) t(id, Seller_id, Months, Sales_amount)
), months as (
select * from ( values
(1, 'Jan')
,(2, 'Feb')
,(3, 'Mar')
,(4, 'Apr')
,(5, 'May')
-- , etc
) t(id,name)
)
select *
from (
select t.*,
lag(Sales_amount,1) over (partition by Seller_id order by m.id) m1,
lag(Sales_amount,2) over (partition by Seller_id order by m.id) m2
from tbl t
join months m on m.name=t.Months
) t
where Sales_amount > m1 and m1 > m2;
反之亦然:将select * from funny_quotes where quote_date > extract(epoch from (now() - interval '3 days'))
转换为时间戳:
quote_date
您可以详细了解in the docs