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

如何让Prisma API返回数据库服务器当前时间戳?

如何在Prisma中使用数据库服务器时间戳设置字段(无需原生查询)

方案1:在Prisma Schema中设置字段默认值为now()

这是最简洁且符合需求的方案,直接让数据库在创建记录时自动填充服务器当前时间,无需在代码中额外操作,也不会产生额外查询。

修改你的Prisma Schema:

model User {
  id            Int      @id @default(autoincrement())
  username      String   @unique
  email         String   @unique
  emailVerified DateTime @default(now()) // 数据库自动用服务器当前时间填充该字段
}

之后创建用户时,无需传入emailVerified字段:

this.user = await prisma.User.create({
  data: {
    username: username,
    email: email,
    // 无需手动设置emailVerified,数据库自动处理
  },
});

方案2:手动更新时使用dbgenerated()(Prisma 4.16+)

如果需要在更新记录时手动将字段设置为数据库服务器当前时间(而非创建时的默认值),可以使用Prisma提供的dbgenerated()函数,无需编写原生查询:

await prisma.User.update({
  where: { id: userId },
  data: {
    emailVerified: prisma.dbgenerated("NOW()"),
  },
});

额外说明

你之前用$queryRaw获取当前时间的方式会触发两次数据库查询(一次查时间,一次创建记录),而上述方案都是单次查询,且完全基于Prisma API,避免了原生SQL的编写。

另外,new Date()获取的是客户端运行环境的时间,可能和数据库服务器的时间(时区、同步精度)存在差异,而数据库的NOW()是直接取服务器端时间,能保证时间的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:17:08