TypeORM 和 PostgreSQL 中的当前日期

Ang*_*nez 11 javascript postgresql typescript nestjs

在 PostgreSQL 和 TypeORM 中拥有日期字段的最佳方式是什么?

我在 PostgreSQL(一般 SQL 数据库)中相对较新,但在 MongoDB(使用 Mongoose)中我通常有一个这样的字段:

export class User {
  @Prop({ default: Date.now() })
  createdAt: Date;
}
Run Code Online (Sandbox Code Playgroud)

在 TypeORM 和 PostgreSQL 中与此等效的是什么?因为,如果我使用这种方法,PostgreSQL 会抛出错误。

QueryFailedError:日期/时间字段值超出范围:“1634416004545”

Geo*_*sov 17

我知道这是一个旧问题,但这是我今天偶然发现的,并且没有得到批准的答案,所以我认为它将来可能会对像我这样的人有所帮助。

基本上,问题来自于使用Date.now()而不是new Date(). 我的工作示例如下所示

  @Column({ type: "timestamptz", default: () => "CURRENT_TIMESTAMP" })
  createdDate: Date;
Run Code Online (Sandbox Code Playgroud)

如果未提供该值,它将分配当前值。这里请注意,如果更新一行并且新值缺少该createdDate字段,则旧值将被覆盖。

然后如果你想手动设置它,你只需new Date()像这样使用

const created = { ..., createdDate: new Date(), ...}
Run Code Online (Sandbox Code Playgroud)


小智 14

您可以使用@CreateDateColumn装饰器来实现您想要的:

export class User {
  @CreateDateColumn()
  createdAt: Date;
}
Run Code Online (Sandbox Code Playgroud)