npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

prisma-vietnam-time

v0.1.4

Published

Prisma Client extension for storing createdAt and updatedAt fields in Vietnam local time (UTC+7).

Readme

prisma-vietnam-time

Prisma Client extension for storing createdAt and updatedAt timestamps in Vietnam local time (UTC+7). It supports both camelCase and snake_case field names, including createdAt, updatedAt, created_at, and updated_at.

Useful for Prisma applications that store local Vietnam time in MySQL DATETIME columns or other database fields without timezone conversion.

Features

  • Automatically sets missing createdAt and updatedAt values.
  • Updates timestamp fields on Prisma update, updateMany, and upsert operations.
  • Supports create, createMany, update, updateMany, and upsert.
  • Works with camelCase, snake_case, and custom timestamp field names.
  • Configurable UTC offset; Vietnam time defaults to UTC+7 (420 minutes).
  • Built with TypeScript and Prisma Client extensions.

Installation

npm install prisma-vietnam-time

The package requires Node.js 18 or later and @prisma/client 5.0.0 or later.

Quick start

import { PrismaClient } from "@prisma/client";
import { createVietnamTimeExtension } from "prisma-vietnam-time";

const prisma = new PrismaClient().$extends(
  createVietnamTimeExtension(),
);

With a Prisma model such as:

model User {
  id         Int      @id @default(autoincrement())
  email      String   @unique
  created_at DateTime
  updated_at DateTime
}

The extension automatically supplies or updates the timestamp fields using Vietnam local time.

Custom field names

Use createdFields and updatedFields when your schema uses different names:

const prisma = new PrismaClient().$extends(
  createVietnamTimeExtension({
    createdFields: ["createdOn"],
    updatedFields: ["updatedOn"],
  }),
);

Field matching ignores underscores and letter casing. For example, created_at, Created_at, and createdAt are treated as equivalent when they are included in the configured field names.

Custom UTC offset

The default offset is 420 minutes (UTC+7). You can configure another offset in minutes:

const prisma = new PrismaClient().$extends(
  createVietnamTimeExtension({
    offsetMinutes: 420,
  }),
);

Supported operations

The extension handles timestamp fields in these Prisma Client operations:

  • create
  • createMany
  • update
  • updateMany
  • upsert

It only changes fields whose Prisma type is DateTime and whose names match the configured field lists.

Important notes

  • Use database columns suitable for local-clock storage, such as MySQL DATETIME.
  • Do not combine this extension with database triggers or defaults that also add seven hours.
  • Raw SQL queries and writes from other services are not intercepted.
  • Existing records are not migrated.
  • For systems serving multiple time zones, storing UTC and converting at the application or presentation layer may be a better choice.

API

createVietnamTimeExtension(options?: {
  createdFields?: string[];
  updatedFields?: string[];
  offsetMinutes?: number;
});

The package also exports vietnamNowForDatabase(offsetMinutes), which returns a Date adjusted by the specified offset.

License

MIT