我获得了大量使用纪元时间的行。 id,customerid,orderid,uxtime
现在我的桌面上是建立一个管理页面,允许其他人快速浏览这一大堆行。
他们希望能够选择年份和月份并获得该月份列表。
这意味着:选择2016年和4月应从4月16日返回所有ID。
这可以在一个聪明的酷sql句子中完成。这就是你进来的地方。我正在努力并取得一些进展,但我很确定你们所有人都比我快得多。 :)
答案 0 :(得分:1)
要将“2016年4月”转换为使用make_date()
和extract()
extract(epoch from make_date(2016,4,1))
你还需要一个where子句的上限,这通常是下个月的第一个:
extract(epoch from make_date(2016,4,1) + interval '1' month)
所以你的SQL语句会是这样的:
select ...
from ...
where uxtime >= extract(epoch from make_date(2016,4,1))
and uxtime < extract(epoch from make_date(2016,4,1) + interval '1' month);
稍微简短的写作方式是:
select ...
from ...
where to_char(to_timestamp(uxtime), 'yyyy-mm') = '2016-04'
然而,上面的第一个解决方案会慢一点很多,因为它无法在uxtime
上使用索引
如果您真的更喜欢该解决方案来加速查询,可以在to_char(to_timestamp(uxtime), 'yyyy-mm')
上创建索引。