Moim prostym przypadkiem użycia jest przekazanie date i porównanie go z domyślną kolumną createdAt.

where: {
                createdAt: {
                    $eq: date
                }
            }

A moja data jest ciągiem takim jak ten date = '2018-12-12'

Problem polega na tym, że sekwencja nie jest porównywana tylko z datą. Ale dodaje godzinę 00:00:00 do mojej daty, a następnie porównuje. Tak więc generowanie sekwencji zapytania wygląda tak.

WHERE `redeem_points`.`createdAt` = '2018-11-02 00:00:00';

Na co zasłużyłem

WHERE `redeem_points`.`createdAt` = '2018-11-02';

Jak mogę to osiągnąć za pomocą sequlize?

1
Pathum Kalhan 13 listopad 2018, 14:28

2 odpowiedzi

Najlepsza odpowiedź

Myślę, że chciałbyś czegoś więcej w stylu:

{
  where: {
    createdAt: { [Op.like]: `${date}%`, },
  }
}

Co dałoby składnię SQL taką jak (zwróć uwagę na symbol wieloznaczny):

WHERE createdAt LIKE '2018-11-02%'

Operatory mogą dać Ci szeroki zakres odpowiedników składni SQL, dodatkowo ja myślę, że skrót, którego używasz, jest przestarzały, więc podpisałem składnię Op, że możesz potrzebować tego jako sequelize.Op, jeśli nie destrukturyzujesz swoich zmiennych.

1
D Lowther 13 listopad 2018, 14:57

Użyłem biblioteki moment.js, ale oczywiście początek i koniec dnia można uzyskać za pomocą Funkcjonalność JS. musisz również sprawdzić strefę czasową.

let condition = {};

// For the case when you want to get a  data for the specific date
// if (date) {
//   condition.createdAt = {
//     [Op.and]: [
//       {
//         [Op.gte]: moment(date)
//           .startOf("day")
//           .format("YYYY-MM-DDTHH:mm:ss.SSS[Z]"),
//       },
//       {
//         [Op.lte]: moment(date)
//           .endOf("day")
//           .format("YYYY-MM-DDTHH:mm:ss.SSS[Z]"),
//       },
//     ],
//   };
// }

// If you want to get a data for the current day
condition.createdAt = {
  [Op.and]: [
    {
      [Op.gte]: moment().startOf("day").toDate(),
    },
    {
      [Op.lte]: moment().endOf("day").toDate(),
    },
  ],
};

ActivityLog.findAll({
  where: condition,
});
0
Chintan Patel 21 październik 2021, 15:58