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

如何在SQLite中将mm/dd/yyyy格式的日期转换为yyyy-mm-dd格式

SQLite中将mm/dd/yyyy格式日期转换为yyyy-mm-dd的操作方法

根据你使用的SQLite版本不同,有两类实现方案:

方案1:SQLite 3.39.0及以上版本(最简方案)

3.39.0版本开始SQLite原生支持strptime格式解析,可以直接识别非补零的mm/dd/yyyy格式,无需手动拆分。

  • 仅查询时转换,不修改原有数据:
SELECT strftime('%Y-%m-%d', 你的日期字段名, '%m/%d/%Y') AS 格式化后日期 FROM 你的表名;
  • 直接更新表内存储的日期格式:

操作前建议先备份全表数据,避免转换出错丢失数据

UPDATE 你的表名 
SET 你的日期字段名 = strftime('%Y-%m-%d', 你的日期字段名, '%m/%d/%Y');

方案2:兼容所有SQLite版本

低版本没有内置日期解析函数,需要手动拆分月、日、年,补零后拼接,兼容非补零的日期格式(比如3/11/2000):
假设表名为user_info,存储日期的字段名为register_date,示例语句如下:

  • 查询转换:
SELECT
  -- 提取年份:取第二个/之后的所有内容
  substr(register_date, instr(register_date, '/', instr(register_date, '/') + 1) + 1)
  || '-'
  -- 提取月份:取第一个/之前的内容,补零到2位
  || printf('%02d', substr(register_date, 1, instr(register_date, '/') - 1))
  || '-'
  -- 提取日期:取两个/中间的内容,补零到2位
  || printf('%02d', substr(
    register_date,
    instr(register_date, '/') + 1,
    instr(register_date, '/', instr(register_date, '/') + 1) - instr(register_date, '/') - 1
  )) AS formatted_date
FROM user_info;
  • 批量更新表内数据:
UPDATE user_info
SET register_date = 
  substr(register_date, instr(register_date, '/', instr(register_date, '/') + 1) + 1)
  || '-'
  || printf('%02d', substr(register_date, 1, instr(register_date, '/') - 1))
  || '-'
  || printf('%02d', substr(
    register_date,
    instr(register_date, '/') + 1,
    instr(register_date, '/', instr(register_date, '/') + 1) - instr(register_date, '/') - 1
  ));

注意事项

转换后的yyyy-mm-dd格式是SQLite官方推荐的日期存储格式,后续做日期排序、计算、筛选时可以直接被SQLite内置日期函数识别,不需要再做格式转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:36:02