Skip to content

monolayer / schema / timestamp

Function: timestamp()

timestamp(precision?): PgTimestamp

Column that stores both date and time without time zone with an optional precision.

Parameters

ParameterTypeDescription
precision?DateTimePrecisionNumber of fractional digits retained in the seconds field. The allowed range is from 0 to 6.

Returns

PgTimestamp

Remarks

Without precision specified, there is no explicit bound on precision. It can store date / times between 4713 BC and 294276 AD.

The JavaScript Date implementation can represent only a maximum of September 13, 275760 AD. If you need to read/store dates after this maximum, you'll have to implement a custom type serializer and parser with node-pg-types.

Kysely database schema type definition

ts
{
  readonly __select__: Date | null;
  readonly __insert__: Date | string | null | undefined;
  readonly __update__: Date | string | null;
};

Nullability and optionality will change according to the column's constraints, generated values, and default data values.

Zod Schema

Types:

ts
{
  input?:  Date | string | null | undefined;
  output?: Date | null | undefined;
}

Nullability and optionality will change according to the column's constraints, generated values, and default data values.

Validations:

  • Explicit undefined values are rejected.
  • Input value must be Date, string, or null.
  • Non-null values must be:
    • Coercible to a Date.
    • Date must be 4713 BC or later.

Example

ts
import { schema, table, timestamp } from "monolayer/pg";
import { zodSchema } from "monolayer/zod";

const dbSchema = schema({
  tables: {
    example: table({
      columns: {
        createdAt: timestamp(),
      },
    }),
  },
});

// Kysely database schema type
type DB = typeof dbSchema.infer;
// Zod Schema
const schema = zodSchema(database.tables.example);

See

timestamp without time zone (PostgreSQL Docs)