Prismaで日付データを扱う
RDBMSを使うとなると、created_atなどで日付・時間データを扱うことが多いのではと思ったので、ちょっと試してみました。 カラム定義には、DateTimeを指定 テーブルやカラムの定義は、schema.prism […]
広告ここから
広告ここまで
目次
RDBMSを使うとなると、created_atなどで日付・時間データを扱うことが多いのではと思ったので、ちょっと試してみました。
カラム定義には、DateTimeを指定
テーブルやカラムの定義は、schema.prismaファイルに書きます。
日付・時間データを扱うカラムを足す場合は、DateTime型を指定します。
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
published_at DateTime?
}
レコード作成時の日時を設定したい場合
Prismaでは、@defaultでデフォルト値を指定できます。
日時データで「今」を設定したい場合は、now()を入れましょう。
model Post {
id Int @id @default(autoincrement())
title String
content String?
published Boolean @default(false)
published_at DateTime?
created_at DateTime @default(now())
}
INSERT / UPDATE / WHEREではDate型で値を指定する
データを入れる時は、Date型で値を渡します。moment / dayjsなどを使う場合、toDate()などでDateオブジェクトに変換しましょう。
await prisma.post.create({
data: {
title: faker.lorem.word(),
published_at: dayjs().add(1, 'day').toDate(),
author: {
create: {
name: faker.name.firstName(),
email: faker.internet.email(),
}
}
}
})
検索でも同様です。
lte, lt, equals, gt, gteなどで範囲指定ができます。
const users = await prisma.user.findMany({
where: {
posts: {
every: {
published_at: {
lte: dayjs().add(1, 'day').toDate(),
gte: dayjs().subtract(1, 'day').toDate(),
}
}
}
},
include: {
posts: true,
},
})