以毫秒为单位的SQLite当前时间戳?

kknvjkwl  于 2022-11-15  发布在  SQLite
关注(0)|答案(5)|浏览(251)

我将SQLite3列中的一个时间戳字段存储为TIMESTAMP DATETIME DEFAULT CURRENT_TIMESTAMP,我想知道是否有什么方法可以让它在时间戳中也包含毫秒?

gt0wga4j

gt0wga4j1#

不使用CURRENT_TIMESTAMP,而使用(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),这样您的列定义将变为:

TIMESTAMP DATETIME DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW'))

例如:

CREATE TABLE IF NOT EXISTS event
(when_ts DATETIME DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')));
gpfsuwkq

gpfsuwkq2#

要获取自纪元以来的毫秒数,可以使用带有一些附加计算的julianday()

-- Julian time to Epoch MS     
SELECT CAST((julianday('now') - 2440587.5)*86400000 AS INTEGER);
mwkjh3gx

mwkjh3gx3#

以下方法不需要任何乘法或除法,应始终生成正确的结果,因为在单个查询中多次调用GET‘NOW’应始终返回相同的结果:

SELECT strftime('%s','now') || substr(strftime('%f','now'),4);

生成秒数并将其连接到当前秒+毫秒的毫秒部分。

pgpifvop

pgpifvop4#

下面的查询将生成以毫秒为单位的字符串形式的时间戳:

select strftime("%Y-%m-%d %H:%M:%f", "now");

如果您确实倾向于使用数字表示法,则可以使用:

select julianday("now");
j2cgzkjk

j2cgzkjk5#

被接受的答案只给你UTC。如果您需要本地时间而不是UTC,请使用以下命令:

strftime('%Y-%m-%d %H:%M:%f', 'now', 'localtime')

相关问题