首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Prisma ORM中查找日期范围

在Prisma ORM中查找日期范围
EN

Stack Overflow用户
提问于 2022-10-17 11:38:18
回答 2查看 118关注 0票数 0

我试着按日期范围过滤假期,但我不知道怎么做。请帮帮忙。

数据库: postgresql后端: nestjs + prisma orm (4.0.0)前端: React

有关假期的数据以下列形式存储在数据库中:

代码语言:javascript
复制
id: Int
userId: Int
dateStart: DateTime
dateEnd: DateTime

在前端过滤器中,我有这样的字段:

代码语言:javascript
复制
{
   dateStart: Date;
   dateEnd: Date;
}

我不明白如何向数据库提出请求,以便输出两个范围的接触结果。

以下请求工作不正确:

代码语言:javascript
复制
where: {
   dateStart: { gte: dto.dateStart },
   dateEnd: { lte: dto.dateEnd }
}

例如,如果我是1月25日至2月2日休假的用户,并且在筛选器中指定从1月1日到1月31日的排序,那么假期将不会出现。在本例中,由于不符合dateEnd条件,它将无法工作。

我唯一能猜到的就是将输入的dateStart和dateEnd转换成日期数组,然后在where查询中遍历循环。它起作用了,但速度很慢。例如,如果你过滤了整整一年,那么对数据库的请求就太大了,请告诉我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-17 12:24:25

使用OR算子解决了这一问题。

示例:

代码语言:javascript
复制
OR: [
   { dateStart: { lte: dto?.dateEnd }, dateEnd: { gte: dto?.dateStart } },
   { dateStart: { gte: dto?.dateStart }, dateEnd: { lte: dto?.dateEnd } },
],

这是我的工作。谢谢大家!

票数 1
EN

Stack Overflow用户

发布于 2022-10-17 12:05:02

首先,我会用简单的文字写下你想要寻找的东西。

据我所知(但请纠正我),您希望找到在指定日期范围内的所有假期(部分)。

(这当然有助于区分假期的dateStart/dateEnd和过滤器的filterStart/filterEnd。)

然后,将其转化为一个算法,例如,通过分析与这些日期有关的不同情况。算法应该是:

  • dateStart在(或等于) filterEnd之前,AND
  • dateEnd在(或相等) filterStart

之后

作为最后一步(我将把这一点留给您),您必须将此算法转换为prisma查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74096682

复制
相关文章

相似问题

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