首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模仿[colA]和[colB]之间的[条件]后缀

模仿[colA]和[colB]之间的[条件]后缀
EN

Stack Overflow用户
提问于 2021-01-25 14:21:28
回答 1查看 156关注 0票数 0

在sequelize中复制以下mssql操作时寻找帮助。我们有一个包含valid_from和valid_to列的表,我需要获得今天的当前日期,并且只返回基于此的记录。

我希望利用.findByPK()或.findAll()方法进行后缀

代码语言:javascript
复制
SELECT * FROM [table] WHERE GETUTCDATE() BETWEEN f.valid_from AND f.valid_to 

我发现以下的帖子和项目没有运气。因为它们似乎在同一列之间指定了两个di9ffernt日期。我需要比较两个不同列之间当前的UTCDATE

Sequelize Query to find all records that falls in between date range

Sequelize query - compare dates in two columns

我能够模拟,但仍然想知道是否有人知道如何使用between操作符做同样的事情。

代码语言:javascript
复制
const now = new Date();
            return await models.Form.findAll({
                where: {
                    valid_from: {
                        [Op.lte]: Sequelize.cast(now, 'DATETIMEOFFSET')
                    },
                    [Op.and]: {
                        validTo: {
                            [Op.gte]: Sequelize.cast(now, 'DATETIMEOFFSET')
                        }
                    }
                }
            });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-26 18:40:12

可以使用sequelize.where()编写此查询,以便为中间操作生成WHERE语句。对于当前的时间戳,您需要调用GETUTCDATE(),这是我们可以通过sequelize.fn()完成的。

代码语言:javascript
复制
const forms = await models.Form.findAll({
  where: {
    // create where condition for GETUTCDATE()
    sequelize.where(sequelize.fn('GETUTCDATE'), {
      // BETWEEN valid_from AND validTo
      [Op.between]: [
        sequelize.col('valid_from'), 
        sequelize.col('validTo')
      ],
    }),
  },
});

这将生成SQL,如:

代码语言:javascript
复制
SELECT * FROM `form`
WHERE GETUTCDATE() BETWEEN `valid_from` AND `validTo`

注意,您在示例中强调了valid_from和camelCase validTo

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

https://stackoverflow.com/questions/65886557

复制
相关文章

相似问题

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