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

SQLite如何将m/d/Y H:i:s格式字符串转换为Y-m-d格式日期

SQLite日期格式转换实现方案

方案1:查询时临时转换(不修改原表)

如果仅在统计查询时需要用到转换后的格式,不需要修改原表存储的数据,直接执行以下SQL即可:

SELECT 
  strftime('%Y-%m-%d', substr(date, 7, 4) || '-' || substr(date, 1, 2) || '-' || substr(date, 4, 2)) AS date,
  place,
  app
FROM b1;

转换后的date为字符串类型,可以直接用于分组统计,示例分组查询语句如下:

SELECT 
  strftime('%Y-%m-%d', substr(date, 7, 4) || '-' || substr(date, 1, 2) || '-' || substr(date, 4, 2)) AS date,
  place,
  app,
  COUNT(*) AS record_cnt -- 可替换为实际需要的聚合计算逻辑
FROM b1
GROUP BY date, place;

以上基础方案适用于月、日固定为两位数字的场景。如果你的数据存在单数字的月/日(比如7/5/2020这类格式),可以用更通用的截取逻辑:

SELECT 
  strftime('%Y-%m-%d', 
    substr(date, instr(date, '/', 1, 2) + 1, 4) 
    || '-' 
    || substr(date, 1, instr(date, '/') - 1) 
    || '-' 
    || substr(date, instr(date, '/') + 1, instr(date, '/', 1, 2) - instr(date, '/') - 1)
  ) AS date,
  place,
  app
FROM b1;

方案2:永久修改原表字段格式

如果需要把原表的date字段永久更新为目标格式,按以下步骤执行即可:

  1. 新增临时字段存储转换后的日期
ALTER TABLE b1 ADD COLUMN new_date TEXT;
  1. 批量更新临时字段值
UPDATE b1 
SET new_date = strftime('%Y-%m-%d', substr(date, 7, 4) || '-' || substr(date, 1, 2) || '-' || substr(date, 4, 2));
  1. 替换原字段
ALTER TABLE b1 DROP COLUMN date;
ALTER TABLE b1 RENAME COLUMN new_date TO date;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:06:04