我需要在 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 |
但是我完全迷失在从这些数字中获取整个时间戳上。你能给我任何想法我该如何处理这个问题吗?
假设您的计算机上安装了正确的区域设置:
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