我正在 nextjs 中创建一个跟踪库存的网页。 我正在使用 prisma 连接到我的“mysql”数据库。我想创建一个新行,在库存发生更改时进行注册。在这一行中,我想包含创建该行的日期和时间。问题是,当我希望在 UTC-06:00 中生成日期时,日期是在 UTC+00:00 中生成的。
这是 prisma 模式模型
model inventory_movements {
moveNumber Int @id @default(autoincrement())
name String @db.VarChar(128)
date DateTime? @default(now()) @db.DateTime(0)
amount Decimal @db.Decimal(11, 2)
comment String? @db.VarChar(128)
}
我使用 moment 生成日期,然后更改时区。
import moment from 'moment';
import 'moment-timezone';
prisma.inventory.create({
data: {
name: "product_name",
amount: 1,
comment: "comment on the change",
date: moment().tz('America/Monterrey').format()
}
});
生成的日期是
'2022-12-11T00:21:29-06:00'
,但是数据库有另一个值'2022-12-11 06:21:28'
我尝试了另一种方法,其中数据库自动生成具有默认值的日期。我将该列配置为默认值
NOW()
,它可以正确生成日期。
然后我从 prisma 命令中删除了日期数据,如下所示:
import moment from 'moment';
import 'moment-timezone';
prisma.inventory_movements.create({
data: {
name: "product_name",
amount: 1,
comment: "comment on the change",
}
});
但是我收到错误:
error - unhandledRejection: PrismaClientValidationError:
Invalid `prisma.inventory_movements.create()` invocation:
{
data: {
name: 'product_name',
amount: '1',
comment: 'comment on the change',
+ date: DateTime
}
}
Note: Lines with + are required
这对我来说是工作。
import dayjs from 'dayjs'
import utc from 'dayjs/plugin/utc'
xx.create({
data: {
created: dayjs().utc(true).format()
}
})