თარიღისა და დროის შუალედი არ მუშაობს TypeScript-თან TypeORM-ში PostgreSQL-ში


მინდა მივიღო მონაცემები მითითებულ თარიღსა და დროს შორის. როდესაც ვცდილობ მონაცემების მიღებას 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 ჩანაწერს აბრუნებს

უპასუხე #1

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;

პასუხი #2

დაყენება ბიბლიოთეკა: https://date-fns.org/docs/Getting-Started

ერთ მაგალოვანის შემდეგ:

  • BeforeDate
  • AfterDate
  • BetweenDates
// BeforeDate
const BeforeDate = (date: Date) => Between(subYears(date, 100), date);
return await this.connection.getRepository(ExampleEntity)
      .find({ createdAt: BeforeDate(new Date()) });

// AfterDate
const AfterDate = (date: Date) => Between(date, addYears(date, 100));
    return await this.connection.getRepository(ExampleEntity)
      .find({ createdAt: BeforeDate(new Date()) });

// BetweenDates
// TypeORM Query Operators with validation before 2 months and actual date plus one day
    const BetweenDates = (date: Date) => Between(subMonths(date, 2), addDays(date, 1));

    return await this.connection.getRepository(ExampleEntity)
      .find({
        where: {
          createdAt: BetweenDates(new Date()),
        },
      });