Fields & types (Prisma ORM v7) (/docs/orm/v7/prisma-client/special-fields-and-types)
For the complete Prisma documentation index, see llms.txt. A markdown version of any docs page is available by appending
.mdto its URL.
Learn how to use about special fields and types with Prisma Client
Location: ORM > v7 > Prisma Client > Fields & types
This section covers various special fields and types you can use with Prisma Client.
Working with Decimal
Section titled “Working with Decimal”Decimal fields are represented by the Decimal.js library. The following example demonstrates how to import and use Prisma.Decimal:
import { PrismaClient, Prisma } from "@prisma/client";
const newTypes = await prisma.sample.create({
data: {
cost: new Prisma.Decimal(24.454545),
},
});You can also perform arithmetic operations:
import { PrismaClient, Prisma } from "@prisma/client";
const newTypes = await prisma.sample.create({
data: {
cost: new Prisma.Decimal(24.454545).plus(1),
},
});Prisma.Decimal uses Decimal.js, see Decimal.js docs to learn more.
[!WARNING] The use of the
Decimalfield is not currently supported in MongoDB.
Working with BigInt
Section titled “Working with BigInt”Overview
Section titled “Overview”BigInt fields are represented by the BigInt type (Node.js 10.4.0+ required). The following example demonstrates how to use the BigInt type:
import { PrismaClient, Prisma } from "@prisma/client";
const newTypes = await prisma.sample.create({
data: {
revenue: BigInt(534543543534),
},
});Serializing BigInt
Section titled “Serializing BigInt”Prisma Client returns records as plain JavaScript objects. If you attempt to use JSON.stringify on an object that includes a BigInt field, you will see the following error:
Do not know how to serialize a BigIntTo work around this issue, use a customized implementation of JSON.stringify:
JSON.stringify(
this,
(key, value) => (typeof value === "bigint" ? value.toString() : value), // return everything else unchanged
);Working with Bytes
Section titled “Working with Bytes”Bytes fields are represented by the Uint8Array type. The following example demonstrates how to use the Uint8Array type:
import { PrismaClient, Prisma } from "@prisma/client";
const newTypes = await prisma.sample.create({
data: {
myField: new Uint8Array([1, 2, 3, 4]),
},
});Working with DateTime
Section titled “Working with DateTime”[!NOTE] There currently is a bug that doesn't allow you to pass in
DateTimevalues as strings and produces a runtime error when you do.DateTimevalues need to be passed asDateobjects (i.e.new Date('2024-12-04')instead of'2024-12-04').
When creating records that have fields of type DateTime, Prisma Client accepts values as Date objects adhering to the ISO 8601 standard.
Consider the following schema:
model User {
id Int @id @default(autoincrement())
birthDate DateTime?
}Here are some examples for creating new records:
Jan 01, 1998; 00 h 00 min and 000 ms
Section titled “Jan 01, 1998; 00 h 00 min and 000 ms”await prisma.user.create({
data: {
birthDate: new Date("1998"),
},
});Dec 01, 1998; 00 h 00 min and 000 ms
Section titled “Dec 01, 1998; 00 h 00 min and 000 ms”await prisma.user.create({
data: {
birthDate: new Date("1998-12"),
},
});Dec 24, 1998; 00 h 00 min and 000 ms
Section titled “Dec 24, 1998; 00 h 00 min and 000 ms”await prisma.user.create({
data: {
birthDate: new Date("1998-12-24"),
},
});Dec 24, 1998; 06 h 22 min 33s and 444 ms
Section titled “Dec 24, 1998; 06 h 22 min 33s and 444 ms”await prisma.user.create({
data: {
birthDate: new Date("1998-12-24T06:22:33.444Z"),
},
});Related pages
Section titled “Related pages”Type safety Overview: Prisma Client provides full type safety for queries, even for partial queries or included relations. This page explains how to leverage the generated types and utilitiesWhat are Client Extensions: Extend the functionality of Prisma ClientWrite your own SQL: Learn how to use raw SQL queries in Prisma Client