🤖

TypeORM で default 値に現在時刻を適用する

2022/03/19に公開

TypeORM の Default Now

typeorm で、日付列に default now を適用したい場合、 default: ()=>"now()" が正解のようです。

@Entity()
export class DatetimesColumn{
    
    // ...
    
    @Column({
        name: 'created_at',
        type: 'timestamp',
        default: ()=>"now()",
        precision: 0,
    })
    readonly createdAt: Date;
}

CURRENT_TIMESTAMP や new Date() を利用した場合でも問題なく動作するのですが、
typeorm migration:generate 実行時に 毎回テーブルの差分が生まれてしまうため、
now() を使用する記述が推奨されているようです。

https://github.com/typeorm/typeorm/issues/877#issuecomment-772051282

Discussion