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,
},
})