Сравните время отметки времени в Postgresql с Sequelize - PullRequest
0 голосов
/ 13 января 2020

Вот моя функция:

 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 , но все еще безнадежно

...