Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL按历元月份分组_Sql_Postgresql_Epoch - Fatal编程技术网

PostgreSQL按历元月份分组

PostgreSQL按历元月份分组,sql,postgresql,epoch,Sql,Postgresql,Epoch,我得到了大量使用大纪元时间的行。 id、customerid、orderid、uxtime 在我的办公桌上,现在正在建立一个管理页面,允许其他人快速浏览这一大堆行 他们希望能够选择年份和月份,并获得月份列表 这意味着:选择2016年和4月,它们将返回4月16日的所有ID 这可以在一个聪明酷的sql语句中完成。那就是你进来的地方。我正在努力,并取得了一些进展,但我敢肯定你们所有人都比我快得多 要将“2016年4月”转换为unix epoch,请使用make_date()和extract() 您还需

我得到了大量使用大纪元时间的行。 id、customerid、orderid、uxtime

在我的办公桌上,现在正在建立一个管理页面,允许其他人快速浏览这一大堆行

他们希望能够选择年份和月份,并获得月份列表

这意味着:选择2016年和4月,它们将返回4月16日的所有ID

这可以在一个聪明酷的sql语句中完成。那就是你进来的地方。我正在努力,并取得了一些进展,但我敢肯定你们所有人都比我快得多

要将“2016年4月”转换为unix epoch,请使用
make_date()
extract()

您还需要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);
然而,上述解决方案比第一个解决方案的速度要慢,因为它不能“利用
uxtime

如果您确实希望该解决方案加快查询速度,您可以在
上创建一个索引,以\u char(to\u timestamp(uxtime),'yyyy-mm')

请回答您的问题,并添加一些示例数据和基于该数据的预期输出。请您的问题不会在评论中发布代码或附加信息。
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'