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

SQLite:将varchar格式时间拆分为日期与时分秒列的解决方案

SQLite 处理ISO8601格式字符串转时间戳并拆分日期时间

你的问题出在使用了Oracle/PostgreSQL风格的TO_DATE和TO_CHAR函数——SQLite并不支持这些函数,它有自己一套日期时间处理函数。针对你的需求,直接用SQLite内置的函数就能解决:

1. 直接查询转换结果

如果只是需要查询时生成这三个列(时间戳、日期、时分秒),执行以下SQL:

SELECT
  -- 转换为SQLite支持的datetime格式(等效Timestamp)
  datetime(your_column_name) AS timestamp_col,
  -- 提取YYYY-MM-DD格式的日期
  date(your_column_name) AS date_col,
  -- 提取HH:MM:SS格式的时分秒(自动忽略毫秒部分)
  strftime('%H:%M:%S', your_column_name) AS time_col
FROM your_table_name;

2. 给表添加新列并持久化数据

如果需要把这些转换后的值永久存在表中,先添加列再更新数据:

第一步:添加新列

ALTER TABLE your_table_name
ADD COLUMN timestamp_col DATETIME;

ALTER TABLE your_table_name
ADD COLUMN date_col DATE;

ALTER TABLE your_table_name
ADD COLUMN time_col TEXT;

第二步:更新数据到新列

UPDATE your_table_name
SET
  timestamp_col = datetime(your_column_name),
  date_col = date(your_column_name),
  time_col = strftime('%H:%M:%S', your_column_name);

关键说明

  • SQLite原生支持解析你提供的YYYY-MM-DDTHH:MM:SS.SSSZ格式字符串,datetime()、date()、strftime()函数都能直接识别处理,不需要额外处理T和Z符号。
  • 如果需要保留毫秒部分的时分秒,可以把strftime('%H:%M:%S', ...)改成strftime('%H:%M:%f', ...),会返回HH:MM:SS.SSS格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 22:24:32