我将SQLite3列中的一个时间戳字段存储为TIMESTAMP DATETIME DEFAULT CURRENT_TIMESTAMP,我想知道是否有什么方法可以让它在时间戳中也包含毫秒?
TIMESTAMP DATETIME DEFAULT CURRENT_TIMESTAMP
gt0wga4j1#
不使用CURRENT_TIMESTAMP,而使用(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')),这样您的列定义将变为:
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')));
gpfsuwkq2#
要获取自纪元以来的毫秒数,可以使用带有一些附加计算的julianday():
julianday()
-- Julian time to Epoch MS SELECT CAST((julianday('now') - 2440587.5)*86400000 AS INTEGER);
mwkjh3gx3#
以下方法不需要任何乘法或除法,应始终生成正确的结果,因为在单个查询中多次调用GET‘NOW’应始终返回相同的结果:
SELECT strftime('%s','now') || substr(strftime('%f','now'),4);
生成秒数并将其连接到当前秒+毫秒的毫秒部分。
pgpifvop4#
下面的查询将生成以毫秒为单位的字符串形式的时间戳:
select strftime("%Y-%m-%d %H:%M:%f", "now");
如果您确实倾向于使用数字表示法,则可以使用:
select julianday("now");
j2cgzkjk5#
被接受的答案只给你UTC。如果您需要本地时间而不是UTC,请使用以下命令:
strftime('%Y-%m-%d %H:%M:%f', 'now', 'localtime')
5条答案
按热度按时间gt0wga4j1#
不使用
CURRENT_TIMESTAMP
,而使用(STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW'))
,这样您的列定义将变为:例如:
gpfsuwkq2#
要获取自纪元以来的毫秒数,可以使用带有一些附加计算的
julianday()
:mwkjh3gx3#
以下方法不需要任何乘法或除法,应始终生成正确的结果,因为在单个查询中多次调用GET‘NOW’应始终返回相同的结果:
生成秒数并将其连接到当前秒+毫秒的毫秒部分。
pgpifvop4#
下面的查询将生成以毫秒为单位的字符串形式的时间戳:
如果您确实倾向于使用数字表示法,则可以使用:
j2cgzkjk5#
被接受的答案只给你UTC。如果您需要本地时间而不是UTC,请使用以下命令: