თარიღისა და დროის შუალედი არ მუშაობს 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()),
},
});

