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

时间:2013-07-10 15:29:14

标签: sql sqlite

我将SQLite3列中的时间戳字段存储为TIMESTAMP DATETIME DEFAULT CURRENT_TIMESTAMP,我想知道是否有任何方法可以在时间戳中包含毫秒数?

4 个答案:

答案 0 :(得分:29)

使用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')));

答案 1 :(得分:18)

要获得自纪元以来的毫秒数,您可以使用julianday()进行一些额外的计算:

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

答案 2 :(得分:8)

这是一个查询,它将生成一个带有毫秒的字符串的时间戳:

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

如果您真的想使用数字表示,可以使用:

select julianday("now"); 

答案 3 :(得分:0)

以下方法不需要任何乘法或除法,并且应始终产生正确的结果,因为在单个查询中多次调用“ now”应始终返回相同的结果:

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

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