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

在Prisma中如何将DateTime字段设置为当前时间?

在Prisma ORM中更新DateTime字段为当前时间的正确方式

你遇到的问题是用now()无法正确设置deleted_at为当前时间,这是因为Prisma有专门的内置函数来生成当前时间,或者你也可以直接使用JavaScript的Date对象,以下是两种可行方案:

方案1:使用Prisma内置的DateTime.now()函数

Prisma提供了内置的时间生成函数,需要通过Prisma.DateTime来调用:

首先确保你已经导入了Prisma相关模块:

import { Prisma } from '@prisma/client';

然后在update操作的data中设置:

deleted_at: Prisma.DateTime.now()

方案2:直接使用JavaScript的new Date()

Prisma支持直接接收JavaScript的Date对象,所以也可以这样写:

deleted_at: new Date()

修正后的完整控制器代码

import { Prisma } from '@prisma/client';
import { Response } from 'express';
import { IEmployee, ICompany } from './your-types-path'; // 替换为你的类型文件路径

export const DeleteCompany = async (req:IEmployee, res:Response) => {
 const data:ICompany = req
 const deletedCompany = await prisma.employee.update({
     where: {
         id: Number(data.id)
     },
     data: {
        // 二选一即可
        deleted_at: Prisma.DateTime.now()
        // 或者 deleted_at: new Date()
     }
 })
 return res.status(200).json(deletedCompany)
}

另外补充一点:如果是软删除场景,建议把模型中的deleted_at字段改为可选(未删除时为null),更符合业务逻辑:

model Employee {
 id Int @id @default(autoincrement())
 name String
 created_at DateTime
 deleted_at DateTime? // 添加问号标记为可选字段
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:50:22