使用Prisma操作MySQL数据库时,发现时间数据比实际时间少了8小时。
时区设置不一致
时间类型处理差异
TIMESTAMP
类型会受时区影响DATETIME
类型则不受时区影响// 在Prisma连接字符串中指定时区
datasource db {
provider = "mysql"
url = "mysql://user:password@localhost:3306/db?connection_limit=5&timezone=Asia/Shanghai"
}
// 设置Node.js应用的时区
process.env.TZ = 'Asia/Shanghai';
-- 查看MySQL当前时区设置
SELECT @@global.time_zone, @@session.time_zone;
-- 设置全局时区(需要管理员权限)
SET GLOBAL time_zone = '+8:00';
如果业务允许,使用DATETIME
类型存储时间,它不受时区影响。
希望以上解决方案能帮助您解决问题。如果仍有疑问,可以提供更多环境信息以便进一步分析。