我正在尝试将脚本从 SQLite 转换为 DuckDB,但似乎无法绕过这些时间戳和日期时间格式...
例如,在 SQLite 中,以下代码可以运行:
datetime((lastLogon / 10000000) - 11644473600, 'unixepoch') AS lastLogon
在 DuckDB 中,我无法让自己找到合适的函数...
SELECT epoch_ms(133782998237203223);
导致错误
错误:转换错误:无法将时间戳(MS)转换为时间戳(美国)
SQL状态:空
错误代码:0
我尝试了不同的功能,比如
SELECT to_timestamp(133782998237203223)::TIMESTAMPTZ AT TIME ZONE 'UTC'
但仍然错误
错误:转换错误:无法将纪元秒转换为带有时区的时间戳
epoch_ms
函数需要整数毫秒并返回TIMESTAMP
,但我认为你的数据有100ns的精度?
select epoch_ms(133782998237203223 // 100_000);
-- 2012-05-24 03:26:22.372
to_timestamp
函数在几秒钟内获取 DOUBLE
并返回 TIMESTAMP WITH TIME ZONE
:
select to_timestamp(133782998237203223 / 10_000_000);
-- 2012-05-23 20:26:22.372032-07
(显示在
America/Los_Angeles
)
这两个值都是瞬时值,而不是天真的(本地)时间戳。