错误:函数 to_timestamp(字符变化)不存在

Har*_*vey -1 sql postgresql datetime timestamp

我有时间列(字符串),如下所示:

time
1645437571.1399999
1645437571.14
1645437571.1455667
1645437571.2
1645437572
1645738427
1645738427
Run Code Online (Sandbox Code Playgroud)

当我做:

select to_timestamp(1645437571.1399999);
Run Code Online (Sandbox Code Playgroud)

对于该列中的每个值,我总是得到正确的响应,例如:

2022-02-21 09:59:31.140000 +00:00
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时:

select to_timestamp(time) from pmu;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

[42883] 错误:函数 to_timestamp(字符变化)不存在 提示:没有函数与给定名称和参数类型匹配。您可能需要添加显式类型转换。位置:8

我明白这是因为字符是变化的,所以如果我定义如下格式:

select to_timestamp(time, 'DD-MM-YYYY SS:MS:US') from pmu;
Run Code Online (Sandbox Code Playgroud)

比我得到:

[22008] 错误:日期/时间字段值超出范围:“1645437571.14” 它也应该适用于空值。

小智 5

to_timestamp(varchar) 不存在。您必须在使用 to_timestamp 之前转换数据

select to_timestamp(time::numeric) from pmu;
Run Code Online (Sandbox Code Playgroud)