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

使用@db.Timetz()时Prisma未返回时区信息求助

Prisma @db.Timetz() 未返回带时区时间的解决方法

问题概况

已在Prisma Schema中为startTime和endTime字段配置@db.Timetz(),但API返回结果中未包含时区信息,数据库中存储的是带时区的时间数据。

核心原因

Prisma的DateTime类型用于映射日期+时间类型(如PostgreSQL的timestamp with time zone),而timetz是仅包含时间+时区的类型,二者类型不匹配会导致时区信息在转换过程中丢失。

解决步骤

1. 修改Prisma Schema字段类型

将startTime和endTime的类型从DateTime改为Time,保留@db.Timetz()注解:

model TableX {
  id        String         @id @default(uuid())
  startTime Time?          @db.Timetz()
  endTime   Time?          @db.Timetz()
  createdAt DateTime       @default(now())
  updatedAt DateTime       @updatedAt
}

2. 重新生成Prisma客户端

执行命令更新客户端,使Schema变更生效:

npx prisma generate

3. 验证API响应

重新调用API后,startTime和endTime将返回带时区的时间字符串(如"10:00:00+03:00")。

额外排查点

  • 若仍有问题,检查Prisma客户端版本,建议升级至最新稳定版:
    npm update prisma
    
  • 确认API序列化逻辑未主动移除时区信息(如某些JSON序列化工具默认转换为本地时间且隐藏时区,需配置保留时区格式)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:20:36