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

SQLite数据迁移:如何将字符串start_time转为长整型存入新列?

可以仅通过SQL命令完成该数据迁移操作

SQLite内置的类型转换、时间处理函数完全支持你需要的字符串转长整型的批量同步需求,操作步骤如下:

操作步骤

  • 第一步:新增start_time_int字段
    执行以下SQL添加长整型存储字段,SQLite的INTEGER类型最大支持9223372036854775807的取值,完全覆盖常用Long类型的数值范围:
    ALTER TABLE my_table ADD COLUMN start_time_int INTEGER;
    
  • 第二步:批量同步旧字段值到新字段
    根据你的start_time存储格式选择对应SQL:
    1. 若start_time存的是数字形式的字符串(例如"1704081600000"这类时间戳字符串),直接用CAST做类型转换即可:
    UPDATE my_table SET start_time_int = CAST(start_time AS INTEGER);
    
    1. 若start_time存的是格式化时间字符串(例如"2024-01-01 12:00:00"),通过strftime函数转成时间戳:
    -- 转13位毫秒级时间戳(符合常用long类型时间戳规范)
    UPDATE my_table SET start_time_int = strftime('%s', start_time) * 1000;
    
  • 第三步:校验转换结果(可选但推荐)
    先查询是否存在转换异常的行,SQLite转换非法数字字符串为整数时会返回0或截断有效值,异常行可以单独处理:
    SELECT * FROM my_table WHERE start_time_int IS NULL OR start_time_int = 0;
    
    也可以随机抽查行确认两个字段值对应关系正确:
    SELECT start_time, start_time_int FROM my_table LIMIT 10;
    

注意:如果表数据量较大,建议在业务低峰期执行UPDATE操作避免锁表影响线上业务。如果需要后续新增/更新数据时自动同步两个字段的值,可以新增SQLite触发器自动维护start_time_int,无需业务代码双写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:54:04