我在SQLite3列中存储了一个时间戳字段,TIMESTAMP DATETIME DEFAULT CURRENT_TIMESTAMP
我想知道是否有任何方法可以在时间戳中包含毫秒数?
LS_*_*ᴅᴇᴠ 32
而不是CURRENT_TIMESTAMP
使用,(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW'))
以便您的列定义变为:
TIMESTAMP DATETIME DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW'))
Run Code Online (Sandbox Code Playgroud)
例如:
CREATE TABLE IF NOT EXISTS event
(when_ts DATETIME DEFAULT(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')));
Run Code Online (Sandbox Code Playgroud)
Nik*_*nko 19
要获得自纪元以来的毫秒数,您可以使用julianday()
一些额外的计算:
-- Julian time to Epoch MS
SELECT CAST((julianday('now') - 2440587.5)*86400000 AS INTEGER);
Run Code Online (Sandbox Code Playgroud)
这是一个查询,它将生成一个带有毫秒的字符串的时间戳:
select strftime("%Y-%m-%d %H:%M:%f", "now");
Run Code Online (Sandbox Code Playgroud)
如果你真的想要使用数字表示,你可以使用:
select julianday("now");
Run Code Online (Sandbox Code Playgroud)
以下方法不需要任何乘法或除法,并且应始终产生正确的结果,因为在单个查询中多次调用 get 'now' 应始终返回相同的结果:
SELECT strftime('%s','now') || substr(strftime('%f','now'),4);
Run Code Online (Sandbox Code Playgroud)
生成秒数并将其连接到当前秒 + 毫秒的毫秒部分。
接受的答案只给你 UTC。如果您需要本地时间而不是 UTC,请使用:
strftime('%Y-%m-%d %H:%M:%f', 'now', 'localtime')
Run Code Online (Sandbox Code Playgroud)