Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLITE3:如何从DATETIME转换到UNIX历元时间_Sqlite_Epoch - Fatal编程技术网

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',…)
部分负责将SQLite
datetime
值转换为其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
转换降低小数秒。