首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TypeORM时间戳日期等式无效

TypeORM时间戳日期等式无效
EN

Stack Overflow用户
提问于 2022-02-19 22:50:03
回答 1查看 4K关注 0票数 0

我使用TypeORM来处理一个类似于以下内容的实体:

代码语言:javascript
运行
复制
@Entity('users')
export class UserEntity extends BaseEntity {
  @PrimaryColumn()
  id: string;

  @CreateDateColumn({ type: 'timestamp' })
  createdAt: Date;

  @UpdateDateColumn({ type: 'timestamp' })
  updatedAt: Date;
}

但是,当我试图使用timestamp实体的存储库执行任何类型的与TypeORM等式相关的SQL查询时,它不能正常工作。例如,查询:

代码语言:javascript
运行
复制
const id = 'dbe9e81d-aefa-459d-8460-707ade0fa156';
const userEntity = userRepository.findOne(id); // UserEntity(...)
const sameUserEntity = userRepository.findOne({ where: { createdAt: userEntity.createdAt } }); // undefined

返回userEntity的正确实体和sameUserEntity的未定义实体。我查看了TypeORM为该查询构造的日志,它如下所示:

代码语言:javascript
运行
复制
SELECT "UserEntity"."id" AS "UserEntity_id", 
    "UserEntity"."created_at" AS "UserEntity_created_at",
    "UserEntity"."updated_at" AS "UserEntity_updated_at" 
FROM "users" "UserEntity"
WHERE "UserEntity"."created_at" = $1 LIMIT 1 -- PARAMETERS: ["2022-02-19T22:10:13.564Z"]

TypeORM似乎没有将JavaScript Date对象转换为正确的PostgreSQL timestamp格式。数据库中的时间戳看起来像2022-02-19 22:10:13.564432,它是一种完全不同的格式,而且精度更高。

在使用timestamp时,是否应该有一种特定的方式进行与TypeORM相关的搜索?

注意:我也尝试过寻找有同样问题的人,但我没有看到任何明确的解决方案。我试图围绕创建的日期实现基于游标的分页,但是大于和小于运算符也不能正常工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-13 11:59:56

最近,我遇到了同样的问题,并通过将precision: 3添加到列装饰器来修复它。请注意,这是基于这样的假设,即您开始不需要这样的精度。

代码语言:javascript
运行
复制
@Entity('users')
export class UserEntity extends BaseEntity {
  @PrimaryColumn()
  id: string;

  @CreateDateColumn({ 
    type: 'timestamp', 
    precision: 3
  })
  createdAt: Date;

  @UpdateDateColumn({
    type: 'timestamp', 
    precision: 3
  })
  updatedAt: Date;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71189866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档