首页 > 解决方案 > 使用 Sequelize 按日期查询时间戳

问题描述

我想通过createdAt列在我的数据库中找到一些条目,但只使用日期。我正在使用 postgres,它createdAt是一个timestamptz. 以下是其中条目的示例:2019-02-27 20:17:07.05+00

这就是我的查询设置的样子:

const dateString = momentDate.format('YYYY-MM-DD')
query.createdAt = { $iLike: `%${dateString}` }

不幸的是,这不起作用,我收到以下错误:

retry-as-promised:error SequelizeDatabaseError: operator does not exist: timestamp with time zone ~~* unknown

问题可能是因为我使用的是字符串吗?按日期查询的正确方法是什么?

标签: javascriptpostgresqlsequelize.jsfeathers-sequelize

解决方案


使用函数DateDiff从 createdAt 和 dateString 之间获取。需要将 dateString 转换为 datetime

var sequelize = require('sequelize');

var dateString = '01/03/2019';
yourModel.findAll({
    where: sequelize.literal(`DATEDIFF(day,Cast(${dateString} as datetime), createdAt) = 0`)
})
.then(results => {

})
.catch(err => {

});

推荐阅读