Postgresql 查询Sequelize模型字段以重叠日期间隔
如何使用Sequelize modelPostgresql 查询Sequelize模型字段以重叠日期间隔,postgresql,sequelize.js,Postgresql,Sequelize.js,如何使用Sequelize modelSomeTable和.findAll方法执行以下查询: SELECT * from SomeTable WHERE (dateCol1, dateCol2) OVERLAPS ('2001-10-30', '2002-10-30') dateCol1和dateCol2是DATE列。您可以使用sequelize.literal: where : { sequelize.literal('(dateCol1, dateCol2) OVERLAPS ('
SomeTable
和.findAll
方法执行以下查询:
SELECT * from SomeTable WHERE (dateCol1, dateCol2) OVERLAPS ('2001-10-30', '2002-10-30')
dateCol1
和dateCol2
是DATE
列。您可以使用sequelize.literal
:
where : {
sequelize.literal('(dateCol1, dateCol2) OVERLAPS ('2001-10-30', '2002-10-30')')
}
我有类似的问题,除了
dateCol1 dateCol2
的类型是带有时区的时间戳而不是DATEONLY。
这就是我尝试的,它解决了我的问题
{
where: {
[Op.all]: Sequelize.literal(`(dateCol1, dateCol2) OVERLAPS (to_timestamp(${new Date(date1).getTime() / 1000}),
to_timestamp(${new Date(date2).getTime() / 1000}))`),
}}
现在我使用以下语法:sequelize.literal(`(dateCol1,dateCol2)重叠(${sequelize.escape(start)},${sequelize.escape(finish)})`
谢谢你的回答,它很有效!我将等待其他答案,是否可以使用[Op.overlap]
或$overlap
语法来实现这一点?如果不可能,我会接受你的回答。@EugeneMala,如果它是左边的单列,它是可能的,但是它有两列,所以我知道它可能不可能。我还是可以等。