SQLite 将 EPOCH 转换为 Date 返回 null

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

我在 SQLite 中将 EPOCH timestampe 转换为日期时遇到问题,无法弄清楚为什么它不会转换。我使用的 SQL 是

select  resolutiondate, datetime(resolutiondate, 'unixepoch') as dt, resolutiondate/864000 as calc, resolutiondate, from query_7798

从上面 分辨率日期 = 1680793848000 dt 中返回的值为空 计算中返回的值 = 0.002341435185185185

所以它的计算就像是 1970 年一样

有关更多信息,这是在 Redash 中通过 JIRA 的数据集成完成的

感谢您的帮助

我希望 dt 中的值返回 4/6/23(或某种格式)

sqlite epoch redash
2个回答
0
投票

看起来你需要将

resolutiondate
除以 1000:

SELECT resolutiondate,
       DATETIME(resolutiondate / 1000, 'unixepoch') AS dt, -- Here!
       resolutiondate / 864000 AS calc, 
FROM   query_7798

sqlfiddle 演示


0
投票

日期时间只保留到 9999 年,但你的数字已经很大了

从您的数字中删除 3 个零将为您提供正确答案。

我对数字进行了脱脂,以向您展示每个零的时间是如何进行的

所以将您的号码除以 1000 得到您的日期

SELECT DATETIME(1793956207, 'unixepoch');
DATETIME(1793956207, 'unixepoch')
2026-11-06 09:10:07
SELECT DATETIME(168079384800 , 'unixepoch');
DATETIME(168079384800 , 'unixepoch')
7296-03-22 06:00:00
SELECT DATETIME(16807938480 , 'unixepoch');
DATETIME(16807938480 , 'unixepoch')
2502-08-16 07:48:00
SELECT DATETIME(1680793848 , 'unixepoch');
DATETIME(1680793848 , 'unixepoch')
2023-04-06 15:10:48
SELECT DATETIME(1680793848000 / 1000 , 'unixepoch');
DATETIME(1680793848000 / 1000 , 'unixepoch')
2023-04-06 15:10:48

小提琴

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