Вот моя функция:
const tasks = await StudentTask.findAll({
attributes: ['id', ['taskName', 'name'], 'startDate', 'endDate'],
where: {
[Op.and]: [
Sequelize.literal(`"startDate"::date BETWEEN '${startWeek}' AND '${endWeek}'`),
Sequelize.literal(`"endDate"::time >= '${milestone}'::time `),
{ studentId }
]
},
include: [
{ model: Assignment, attributes: [['assignmentName', 'name']] },
{ model: Quiz, attributes: [['quizName', 'name']] }
]
});
Я пытаюсь сравнить время в столбце метки времени, используя :: time , но это не сработало даже в запросе, сгенерированном работой sequelize хорошо. Возвращает пустой массив, вот запрос:
ВЫБЕРИТЕ "student_tasks". "Id", "student_tasks". "TaskName" AS "name", "student_tasks". "StartDate", " student_tasks "." endDate "," assignment "." id "AS" assignment.id "," assignment "." assignmentName "AS" assignment.name "," quiz "." id "AS" quiz.id "," quiz "." quizName "AS" quiz.name "FROM" student_tasks "AS" student_tasks "LEFT OUTER JOIN" назначения "AS" назначение "ON" student_tasks "." assignmentId "=" assignment "." id "LEFT OUTER JOIN" викторины "AS" викторина "ON" student_tasks "." quizId "=" quiz "." id "WHERE (" startDate ":: date BETWEEN '2019-12-10' AND '2020-01-15' AND" endDate " :: time> = '2020-01-13 17: 49: 00 + 07' :: time AND "student_tasks". "studentId" = '5');
Если блок комментариев для код:
Sequelize.literal(`"endDate"::time >= '${milestone}'::time `)
Все работает хорошо. Я пытался с :: timestamp :: time , но все еще безнадежно