SQL 将以纳秒为单位的 unixepoch 时间转换为人类可读时间的查询

SQL Query to convert unixepoch time in nanoseconds to human readable time

我有一个以纳秒为单位的纪元时间戳,如下所示:1634713905326784000 我正在使用 DB Browser for SQLite 将其转换为时间戳,如下所示:

STRFTIME('%Y-%m-%d %H:%M:%f', timestamp/1000000000,'unixepoch') as timestamp

因为我除以 1000000000,所以我只在时间戳的最后部分得到 .000,如下所示:

2021-10-20 07:11:45.000
2021-10-20 07:11:45.000
2021-10-20 07:11:45.000
2021-10-20 07:11:45.000

可以像这样提取纳秒:

CAST ((timestamp % (timestamp/1000000000))/1000000 as NUMERIC) as nsec

这将给我一个只有纳秒的新列

326
372
386
407
430

我想获得完整的时间,包括一列中的小数点,这样当我绘制数据时,我不会在每一秒的开始将它们集中起来,如下所示:

2021-10-20 07:11:45.326
2021-10-20 07:11:45.372
2021-10-20 07:11:45.386
2021-10-20 07:11:45.407
2021-10-20 07:11:45.430

这可能吗?谢谢

您对 STRFTIME 的使用非常满意。它会将获得的值转换为日期时间,但由于您使用的是整数数学,因此它没有获得小数时间。

SELECT 
    STRFTIME('%Y-%m-%d %H:%M:%f', CAST(timestamp AS float) / 1e9,'unixepoch') AS timestamp

这会做你想做的。首先将时间戳转换为浮点值,然后除以 109 将值转换为 unix 纪元。