将 excel 日期转换为 PostgreSQL 中的时间戳

问题描述 投票:0回答:1

我需要在 PostgreSQL 中将数字转换为时间戳。我在数据库中得到的数字是字符变化的。 我已经看到有很多整数的解决方案,但我得到了十进制数,问题就来了。

我得到的最大值类似于下面使用 '1899-12-30'::DATE + CAST(Round(CAST(REPLACE(Excel_date_number, ',','.') as DOUBLE PRECISION)) as INTEGER)

价值 日期
45279,4029282407 2023-12-19
45294,5203472222 2024-01-04
45309,2083333333 2024-01-18

但是我完全迷失在从这些数字中获取整个时间戳上。你能给我任何想法我该如何处理这个问题吗?

sql postgresql timestamp sqldatatypes
1个回答
0
投票

假设您的计算机上安装了正确的区域设置:

set lc_numeric = 'de_DE.utf8';

WITH ts_number AS (
    SELECT
        to_number('45279,4029282407', '99999D9999999999') AS value
)
SELECT
    ('1899-12-30'::date + ((trunc(value)::text || 'days')::interval))
+ (((value - trunc(value)) * 24)::text || 'hours')::interval
FROM
    ts_number;

 ?column?          
----------------------------
 2023-12-19 09:40:12.999996


© www.soinside.com 2019 - 2024. All rights reserved.