MikroORM:如何按日或按月而不是完整日期查询日期 属性?
MikroORM: How to query a date property by the day or month and not the full date?
我有一个日期为 属性
的实体
@Entity()
export class Foo {
// ...other properties
@Property({ type: DateType })
date = new Date()
}
我想进行查询以查找特定日期的所有 Foo
。
例如
async getByDate(someDate: Date) {
const foo = await this.repository.find({
// What should go to get Foo from the same day as `someDate` ?
})
}
我在文档中找不到如何操作。
我也想做一些事情,比如“从某个星期找到 Foo
”或“从某个月找到 Foo
”
如果使用 DateType
,则将其映射到 Date
对象,因此您应该按 Date
对象进行查询。 Date
对象的时间部分将被截断 - 这发生在 DateType
中,所以请随时检查它的源代码,它非常直截了当。
const users = await em.find(User, { date: new Date('2020-05-20') });
https://github.com/mikro-orm/mikro-orm/blob/master/packages/core/src/types/DateType.ts
从实现中你也可以看出,其实它也支持字符串查询,所以这样也行:
const users = await em.find(User, { date: '2021-04-20' });
要过滤整周,您需要先找到一周的开始和结束(会为您保留),并使用 $gte
和 $lt
运算符的组合:
const users = await em.find(User, {
date: {
$gte: new Date('2021-04-19'),
$lt: new Date('2021-04-25'),
},
});
// or with strings
const users = await em.find(User, {
date: {
$gte: '2021-04-19',
$lt: '2021-04-25',
},
});
我有一个日期为 属性
的实体@Entity()
export class Foo {
// ...other properties
@Property({ type: DateType })
date = new Date()
}
我想进行查询以查找特定日期的所有 Foo
。
例如
async getByDate(someDate: Date) {
const foo = await this.repository.find({
// What should go to get Foo from the same day as `someDate` ?
})
}
我在文档中找不到如何操作。
我也想做一些事情,比如“从某个星期找到 Foo
”或“从某个月找到 Foo
”
如果使用 DateType
,则将其映射到 Date
对象,因此您应该按 Date
对象进行查询。 Date
对象的时间部分将被截断 - 这发生在 DateType
中,所以请随时检查它的源代码,它非常直截了当。
const users = await em.find(User, { date: new Date('2020-05-20') });
https://github.com/mikro-orm/mikro-orm/blob/master/packages/core/src/types/DateType.ts
从实现中你也可以看出,其实它也支持字符串查询,所以这样也行:
const users = await em.find(User, { date: '2021-04-20' });
要过滤整周,您需要先找到一周的开始和结束(会为您保留),并使用 $gte
和 $lt
运算符的组合:
const users = await em.find(User, {
date: {
$gte: new Date('2021-04-19'),
$lt: new Date('2021-04-25'),
},
});
// or with strings
const users = await em.find(User, {
date: {
$gte: '2021-04-19',
$lt: '2021-04-25',
},
});