首页 > 解决方案 > 在 postgresql 中不使用 typeorm 的 typescript 之间的日期时间

问题描述

我想检索给定日期时间范围之间的数据。当我尝试从 DBeaver 工具中检索数据时,它会返回所有数据。这是我的查询尝试

SELECT id, "vehicleNo", "vehicleClass",  "issuedOn", "modifiedOn", "paidOn","ticketStatusId"
FROM public.ticket where "paidOn" >= '2019-04-16 02:30:00 AM' and "paidOn" <= '2019-04-16 11:30:00 AM';

但是当我使用 typeorm 时,它不会返回所有数据这里是我的 typeorm 代码

const records = await getConnection().getRepository(Ticket)
                .createQueryBuilder("ticket")
                .innerJoinAndSelect("ticket.ticketStatus", "ticketStatus")
                .where(`ticket.paidOn >= :startDate AND ticket.paidOn <= :endDate
                AND ticket.modifiedBy = :email AND ticketStatus.title = :status `,
                    { startDate: fromDate, endDate: toDate, email: uemail, status: "Paid"})
                .orderBy("ticket.paidOn", "DESC")
                .getMany();

这是必须返回的正确数据集。(8 条记录) 在此处输入图像描述

但它只返回 4 条记录 在此处输入图像描述

标签: postgresqltypescripttypeorm

解决方案


import { startOfDay, endOfDay } from 'date-fns';
import { Between, Equal } from "typeorm";
//...
let findArgs = { 
  where:{
    date: Between(startOfDay(webInputArgs.date).toISOString(), endOfDay(webInputArgs.date).toISOString()), 
    userId: Equal(ctx.req.session.userId)
  }
};
return entity.find(findArgs) as any;

推荐阅读