Я думаю, что нашел решение сам ...
Приведенный выше метод дает следующий SQL-запрос
SELECT SUM("amount") AS "amount", date_trunc('day', "createdAt") AS "createdAt"
FROM "CustomerEarnings" AS "CustomerEarning"
WHERE ("CustomerEarning"."customerAccountId" = 5)
GROUP BY "createdAt"
ORDER BY "CustomerEarning"."createdAt" ASC;
Проблема здесь в том, что, хотя я выбираю "createAt" в качестве псевдонима для усеченного значения из столбца созданного, Sequelize по-прежнему ссылается на столбец созданного в таблице, а не псевдоним.
Я обошел эту проблему, переименовав псевдоним в "creatOn", например
const getAllCustomerEarnings = async (customerAccountId) => {
return await customerEarnings.findAll({
attributes: [
[Sequelize.fn('SUM', Sequelize.col('amount')), 'amount'],
[Sequelize.fn('date_trunc', 'day', Sequelize.col('createdAt')), 'createdOn'],
],
where: {
[Op.and]: [
{customerAccountId: customerAccountId},
]
},
order: [[Sequelize.literal('"createdOn"'), 'ASC']],
group: 'createdOn'
})
}
Обратите внимание, что я должен был также использовать
[[Sequelize.literal('"createdOn"'), 'ASC']],
в предложении order вместо использования псевдонима. Это связано с тем, что Sequelize постоянно менял заглавные буквы столбца псевдонимов в предложении order на «creationon» ...
Надеюсь, это кому-нибудь поможет.