You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无编程经验者求助:SQLite时间字段截断毫秒(不四舍五入)

解决SQLite中截断时间列毫秒(不四舍五入)的方法

别担心,虽然你之前没接触过SQLite,但这个操作其实很容易上手,我给你两种实用的方法,分别适合临时查看和永久修改数据:

方法一:临时查询时截断毫秒(不修改原数据)

如果你只是想先看看截断后的效果,不想改动数据库里的原始数据,可以用SQL查询语句来实时处理:

方式1:用字符串截取(简单直接)

SQLite里的时间字符串格式是固定的YYYY-MM-DD HH:MM:SS.fff,前19个字符正好是不带毫秒的部分,所以用substr函数直接截取即可:

SELECT 
    substr(本地时间, 1, 19) AS 本地时间_无毫秒,
    substr(PC时间, 1, 19) AS PC时间_无毫秒,
    substr(UTC时间, 1, 19) AS UTC时间_无毫秒,
    substr(记录保存时间, 1, 19) AS 记录保存时间_无毫秒
FROM 你的表名;

方式2:用时间格式化函数(更规范)

用SQLite自带的strftime函数,指定格式化到秒的格式,它会自动忽略毫秒部分,不会四舍五入:

SELECT 
    strftime('%Y-%m-%d %H:%M:%S', 本地时间) AS 本地时间_无毫秒,
    strftime('%Y-%m-%d %H:%M:%S', PC时间) AS PC时间_无毫秒,
    strftime('%Y-%m-%d %H:%M:%S', UTC时间) AS UTC时间_无毫秒,
    strftime('%Y-%m-%d %H:%M:%S', 记录保存时间) AS 记录保存时间_无毫秒
FROM 你的表名;

在SQLiteStudio里操作:点击顶部的「SQL Editor」标签,输入上面的语句,把你的表名换成实际的表名称,然后点击执行按钮(绿色播放箭头)就能看到结果了。

方法二:永久修改表中的数据(截断所有时间列的毫秒)

如果需要把数据库里的时间列永久改成不带毫秒的格式,一定要先备份数据库(操作不可逆!):

  1. 在SQLiteStudio里右键你的数据库,选择「Backup database」,保存备份文件到安全的位置。
  2. 打开SQL Editor,输入更新语句,一次性处理所有时间列:
UPDATE 你的表名
SET 
    本地时间 = substr(本地时间, 1, 19),
    PC时间 = substr(PC时间, 1, 19),
    UTC时间 = substr(UTC时间, 1, 19),
    记录保存时间 = substr(记录保存时间, 1, 19);

或者用strftime版本:

UPDATE 你的表名
SET 
    本地时间 = strftime('%Y-%m-%d %H:%M:%S', 本地时间),
    PC时间 = strftime('%Y-%m-%d %H:%M:%S', PC时间),
    UTC时间 = strftime('%Y-%m-%d %H:%M:%S', UTC时间),
    记录保存时间 = strftime('%Y-%m-%d %H:%M:%S', 记录保存时间);
  1. 执行语句后,刷新表(右键表名选「Refresh」),就能看到所有时间列的毫秒都被截断了。

关键说明

这两种方法都是直接截断毫秒,不会四舍五入:

  • substr是直接截取前19个字符,不管毫秒是0.1还是0.9,都直接去掉;
  • strftime函数在解析带毫秒的时间字符串时,只会提取到秒的部分,完全忽略后面的毫秒值,不会进行任何进位。

内容的提问来源于stack exchange,提问作者cicco franco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:20:02