选择过去 24 小时内的“日期”行

Selecting rows of `date` in the last 24 hours

尝试获取基于时间范围的行,例如过去 24 小时、过去 7 天、过去 30 天、过去 1 年等

最后一天是这样计算的

let lastDay = Date.now() - (24 * 60 * 60 * 1000)
lastDay = new Date(lastDay).toISOString()

where 中使用 .findMany 等时,AND 会像这样吗?

      AND: {
            date: {
              gte: lastDay
            }
          }

所以找到大于或等于最近 24 小时的日期行?

您可以在 where 子句中传递一个对象列表,这与使用 AND 过滤条件相同。

对于基于日期的过滤,您可以使用 Filter Operators,例如 gt/gte/lt/lte。

鉴于此架构:

model User {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
}

可以直接传入一个ISO字符串进行比较:

let lastDay = Date.now() - (24 * 60 * 60 * 1000);
lastDay = new Date(lastDay).toISOString();

let id = 1;

await prisma.user.findMany({
    where: {
      AND: [
        {
          id: id,
        },
        {
          createdAt: {
            gte: lastDay,
          },
        },
      ],
    },
  });

这是使用 AND 过滤器的参考。