Запрос метки времени по дате с помощью Sequelize

Я хочу найти некоторые записи в своей БД через столбец createdAt, но просто используя дату. Я использую postgres, а createdAt — это timestamptz. Вот пример того, как выглядит запись в нем: 2019-02-27 20:17:07.05+00

Вот как выглядит настройка моего запроса:

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

К сожалению, это не работает, и я получаю следующую ошибку:

повторение обещанного: ошибка SequelizeDatabaseError: оператор не существует: временная метка с часовым поясом ~~* неизвестна

Возможно, проблема в том, что я использую строку? Каков правильный способ запроса по дате?


person theJuls    schedule 28.02.2019    source источник
comment
createdAt не является nvarchar, поэтому вы не можете использовать $iLike   -  person Chuong Tran    schedule 01.03.2019
comment
Почему бы не создать два параметра startDt вроде - 2019-02-27 00:00:00 и endDt 2019-02-27 23:59:59 и использовать операцию Between?   -  person Rohit Dalal    schedule 01.03.2019


Ответы (1)


Использование функции 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 => {

});
person Chuong Tran    schedule 01.03.2019