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

从数据库获取DateTime字段返回错误时间的技术求助

解决Timestamp查询时区偏移问题

方法1:查询时转换时区获取原始值

如果你的数据库是MySQL,TIMESTAMP类型会自动根据会话时区转换时间。要获取数据库里原样存储的时间,可以在查询时手动转换时区:

SELECT DISTINCT 
  u2.user_username as user,
  u1.id_of_pois as id_of_pois,
  -- 把会话时区转换回数据库存储的时区(假设数据库存的是GMT+3)
  CONVERT_TZ(u2.Timestamp, @@session.time_zone, '+03:00') AS original_timestamp
FROM pois_visit u1, pois_visit u2 
WHERE u1.user_username = ? 
  AND u2.user_username = ? 
  AND u1.id_of_pois = u2.id_of_pois 
  AND TIMESTAMPDIFF(HOUR, u1.Timestamp,u2.Timestamp) BETWEEN -2 AND 2

如果数据库存储的是UTC时间,就把目标时区改成'+00:00'。

方法2:修改数据库连接时区

在建立数据库连接时,直接指定和数据库存储一致的时区(GMT+3),这样读取时不会自动偏移。以Node.js的mysql驱动为例:

const connection = mysql.createConnection({
  host: '你的数据库地址',
  user: '用户名',
  password: '密码',
  database: '数据库名',
  timezone: '+03:00' // 匹配数据库存储时区
});

方法3:更换字段类型(若允许改表结构)

如果不需要时区自动同步功能,把Timestamp字段类型改成DATETIME——这个类型会原样存储和返回时间,完全不受时区设置影响。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:27:35