SQLITE3:如何从DATETIME转换到UNIX历元时间
我试图将数据库中预设数量的SQLITE3:如何从DATETIME转换到UNIX历元时间,sqlite,epoch,Sqlite,Epoch,我试图将数据库中预设数量的DATETIME值转换为相应的历元时间 我的表架构: CREATE TABLE table1 (TIMESTAMP1 DATETIME DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), data1 uint64_t, data2 uint64_t; 输出表: 2020-05-04 04:49:05.207|567|62322 2020-05-04 04:49:05.207|213|65338 2020-05-04 04:4
DATETIME
值转换为相应的历元时间
我的表架构:
CREATE TABLE table1 (TIMESTAMP1 DATETIME DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), data1 uint64_t, data2 uint64_t;
输出表:
2020-05-04 04:49:05.207|567|62322
2020-05-04 04:49:05.207|213|65338
2020-05-04 04:49:05.208|323|65394
2020-05-04 04:49:05.208|233|65401
2020-05-04 04:49:05.208|422|65402
2020-05-04 04:49:05.208|153|65393
现在,我的方法是选择这个数据集,并使用转换后的timestam1历元值将其转储到临时数据库中
我已尝试执行以下命令:
CREATE TABLE temp1 as SELECT * from temp1;
SELECT * INTO tempLog FROM table1;
update templog set timestamp1 = DATETIME(TIMESTAMP1, 'localtime', 'unixepoch');
但这会将所有timestam1列更新为:
1970-01-29 11:02:53
正确的查询应该是:
update tempLog set timestamp1 = strftime('%s', datetime(timestamp1, 'localtime'))
+ strftime('%f', timestamp1)
- strftime('%S', timestamp1);
strftime('%s',…)
部分负责将SQLitedatetime
值转换为其UNIX epoch等效值。然后我们加上“分数秒”,类似于“5.208”,然后减去这些秒得到“0.208”
这将从您的数据出发得出以下结果:
TIMESTAMP1|data1|data2
1588574945.207|567|62322
1588574945.207|213|65338
1588574945.208|323|65394
1588574945.208|233|65401
1588574945.208|422|65402
1588574945.208|153|65393
这回答了你的问题吗@Botje说了一点谢谢,但出于某种原因,它将时间戳列分为两列,第一列是年份。更新帖子。我没有看到对这个问题的任何编辑?@Botje漠视。它不起作用。使用此命令:
updatetable1 set TIMESTAMP1=CAST(DATETIME(“%Y-%m-%d%H:%m:%f”,TIMESTAMP1)作为整数)代码>它只将时间戳1 val更新为“2020”,谢谢Botje!这似乎有点起作用了。然而,它看起来只会在几秒钟内返回。是否有办法根据2020-05-04 04:49:05.208
timestamp返回ms epoch时间?(即.208)。编辑了我的答案。直到localtime
转换降低小数秒。