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

如何在DB Browser for SQLite中将特定TEXT格式转为datetime并计算时间差?

文本格式日期转Datetime并计算时间差方案

CAST函数无法完成转换,是因为数据库无法自动识别1 Jul 2023 10:22:48这种自定义文本日期格式,需要用对应数据库的日期解析函数指定格式规则,以下是主流数据库的实现方法:

1. MySQL/MariaDB

使用STR_TO_DATE函数匹配格式:

SELECT
  STR_TO_DATE(tracks.name, '%e %b %Y %T') AS datetime
FROM tracks;

格式符说明:

  • %e:不带前导零的日期(如1、12)
  • %b:英文月份缩写(如Jul、Jan)
  • %Y:四位年份
  • %T:时分秒格式(HH:MM:SS)

2. PostgreSQL

使用TO_TIMESTAMP函数解析:

SELECT
  TO_TIMESTAMP(tracks.name, 'DD Mon YYYY HH24:MI:SS') AS datetime
FROM tracks;

注意:需确保数据库区域设置支持英文月份缩写,默认英文环境可直接使用。

3. SQL Server

使用TRY_PARSE函数自动识别英文日期格式:

SELECT
  TRY_PARSE(tracks.name AS DATETIME USING 'en-US') AS datetime
FROM tracks;

该方法对这类带英文月份的格式支持最简便,无需手动指定格式符。

4. Oracle

使用TO_DATE函数指定格式:

SELECT
  TO_DATE(tracks.name, 'DD MON YYYY HH24:MI:SS') AS datetime
FROM tracks;

Oracle默认不区分月份缩写的大小写,Jul或JUL都能正常匹配。


计算时间差示例

转换完成后,可使用对应数据库的时间差函数计算条目间的差值:

  • MySQL:用TIMESTAMPDIFF计算秒级差值
SELECT
  TIMESTAMPDIFF(SECOND,
                STR_TO_DATE(t1.name, '%e %b %Y %T'),
                STR_TO_DATE(t2.name, '%e %b %Y %T')) AS time_diff_seconds
FROM tracks t1
JOIN tracks t2 ON t1.id = t2.id - 1; -- 按id关联前后条目,需根据实际业务调整关联条件
  • PostgreSQL:直接用减法获取时间间隔
SELECT
  TO_TIMESTAMP(t2.name, 'DD Mon YYYY HH24:MI:SS') - TO_TIMESTAMP(t1.name, 'DD Mon YYYY HH24:MI:SS') AS time_diff
FROM tracks t1
JOIN tracks t2 ON t1.id = t2.id - 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:22:23