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

SQLite3如何将Unix时间戳转换输出为本地时间?

SQLite Unix时间戳转本地时间异常问题

问题描述

Unix纪元时间戳 1687303606 对应UTC时间 2023-06-20 23:26:46,需要转换为UTC-4的东部夏令时(EDT)本地时间,预期结果为 2023-06-20 19:26:46。但执行以下SQLite语句后:

select datetime(1687303606, 'unixepoch', 'localtime');

输出结果仍为UTC时间 2023-06-20 23:26:46,未转换为本地时间。

环境信息

$ sqlite3 --version
3.42.0 2023-05-16 12:36:15 831d0fb2836b71c9bc51067c49fee4b8f18047814f2ff22d817d25195cf350b0

$ date
Tue Jun 20 19:58:06 EDT 2023

解决方法

1. 强制指定时区环境变量启动SQLite

SQLite的localtime依赖进程的时区环境变量,若系统时区未被正确读取,可在启动sqlite3时指定目标时区:

TZ='America/New_York' sqlite3

再次执行转换语句即可得到正确的EDT时间。

2. 手动指定时区偏移量(临时方案)

若仅需针对EDT(UTC-4)转换,可直接在语句中指定偏移量:

select datetime(1687303606, 'unixepoch', '-4 hours');

此方法可快速得到预期结果,但无法自动适配夏令时与冬令时的切换,仅适用于固定偏移场景。

3. 验证SQLite时区读取是否正常

先执行以下语句验证当前本地时间输出是否与系统一致:

select datetime('now', 'localtime');

若输出与date命令结果一致,说明时区读取正常,需检查原转换语句是否存在拼写错误;若不一致,优先通过设置TZ环境变量修复。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:05:10