【发布时间】:2017-05-29 06:28:53
【问题描述】:
我想混合外部每个位置的时区信息来过滤具有没有时区的时间戳值的行。
我如何在 Jooq 中表达这个 SQL (Postgresql) sn-p
WITH
now(locaton, value) AS (
SELECT
*
FROM unnest(
ARRAY[1,2]::BIGINT[],
ARRAY['2017-05-28 09:30','2017-05-28 10:30']::TIMESTAMP[])
)
SELECT *
FROM now;
不太理想但仍在工作的 sn-p 是:
WITH
now(locaton, value) AS (
SELECT
unnest(ARRAY[1,2]::BIGINT[]) as location,
unnest(ARRAY['2017-05-28 09:30','2017-05-28 10:30']::TIMESTAMP[]) as value
)
SELECT *
FROM now;
可能更正确的一个(被Add support for the SQL Standard WITH ORDINALITY clause #5799屏蔽)
SELECT location, value
FROM
unnest(ARRAY[1,2]::BIGINT[]) WITH ORDINALITY as location
JOIN unnest(ARRAY['2017-05-28 09:30','2017-05-28 10:30']::TIMESTAMP[]) WITH ORDINALITY as value
USING (ordinality);
得到
location | value
------------+---------------------
1 | 2017-05-28 09:30:00
2 | 2017-05-28 10:30:00
(2 rows)
【问题讨论】:
-
哦,使用
WITH ORDINALITY的解决方案非常好。也许这个问题应该得到更高的优先级。
标签: java postgresql jooq unnest