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



我有一个以纳秒为单位的历元时间戳,如下所示:163471390532678400我使用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 epoch。

最新更新