Postgres timezone_minute具有显式类型转换的函数

Postgres timezone_minute function with explicit type casts

提问人:Ben Swinburne 提问时间:1/25/2023 更新时间:1/25/2023 访问量:130

问:

我有两列,和 ,都是字符串。我可以将它们连接起来以获得一列。datetimetimestamp

我需要使用 timezone_minute() 函数。我尝试了各种参数格式,但反复遇到错误

Query 1 ERROR: ERROR:  function timezone_minute(timestamp without time zone) does not exist
LINE 1: select timezone_minute('2023-01-25T05:36:48Z'::date AT TIME ...
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

例如

-- function timezone_minute(timestamp without time zone) does not exist
select timezone_minute('2023-01-25T05:36:48Z'::date AT TIME ZONE 'UTC');
    
-- function timezone_minute(timestamp with time zone) does not exist
select timezone_minute('2023-01-25T05:36:48Z'::date AT TIME ZONE 'UTC');

select timezone_minute('2023-01-25T05:36:48Z'::timestamptz);
select timezone_minute(cast('2023-01-25T05:36:48Z' as TIMESTAMP));

-- etc

我如何正确使用timezone_minute - 不幸的是,严重缺乏此特定功能的文档。

我不能完全控制最终查询,因此需要使用这个函数。生成的查询利用 timezone_minute(),我基本上可以设置参数。

PostgreSQL 转换 时间戳与时区 PostgreSQL-14

评论

0赞 1/25/2023
"有两列,日期和时间,都是字符串“——这是一个非常非常糟糕的主意。在继续之前,您应该解决此问题。
0赞 Ben Swinburne 1/26/2023
@a_horse_with_no_name 谢谢,我知道这很糟糕,它会被修复的。数据来自一些日志,并且采用该格式(结束查询将在 Athena/Presto 上运行)。我正在测试一个 BI 工具,因此为了方便起见,只需使用 Postgres 驱动程序针对 Postgres 中的一个小样本运行它。我记下了格式,以防它影响我应该如何转换它

答:

1赞 user330315 1/25/2023 #1

不幸的是,严重缺乏此特定功能的文档。

是的,因为它不是一个函数。

它是 extract() 函数的参数:

select extract(timezone_minute from '2023-01-25T05:36:48Z'::timestamptz);

评论

0赞 Ben Swinburne 1/26/2023
啊哈!我试着这么想,但里面有一个随机的时区关键字。有趣的是,生成的查询将其用作函数而不是参数。我必须联系供应商。谢谢你的回答select extract(timezone_minute from timestamp '2023-01-25T05:36:48Z'::timezonetz);
0赞 Ben Swinburne 1/27/2023
由于配置错误,它回退到 Athena 驱动程序(默认),并生成与 Athena 用作函数的查询兼容。timestamp_minute()