Показать все данные Даты между двумя датами;если для определенной даты не существует строк, то показывать ноль во всех столбцах с помощью sequelize - PullRequest
0 голосов
/ 13 сентября 2018

люди, я застрял в логической или синтаксической проблеме, я пробовал так много вещей из стека.Но я не получил точного решения моей проблемы.

Проблема

У меня есть таблица abc со следующими столбцами

╔════╦═════════╦═════════════════════╦═══════╗
║ id ║ success ║ transactionTime     ║ value ║
╠════╬═════════╬═════════════════════╬═══════╣
║ 1  ║ 1       ║ 2018/09/12 10:50:00 ║ 10    ║
╠════╬═════════╬═════════════════════╬═══════╣
║ 2  ║ 0       ║ 2018/09/13 10:58:00 ║ 12    ║
╠════╬═════════╬═════════════════════╬═══════╣
║ 3  ║ 1       ║ 2018/09/13 10:55:00 ║ 34    ║
╚════╩═════════╩═════════════════════╩═══════╝

Я хотелПоказать все данные между двумя датами;если для определенной даты не существует строки, то покажите ноль во всех столбцах с помощью sequelize;

Я понимаю с SQL, но не понимаю, как это сделать с Sequilze ORM

У меня естьПопробовал это

startDate = moment().subtract(7, 'days').format('YYYY-MM-DD 00:00:00');
endDate = moment().format('YYYY-MM-DD 23:59:59');  
const Record = await db.abc.count({
        where: {
         transactionTime: {
            $between: [
              startDate, 
              endDate,
            ],
          },
        },
        attributes: [[sequelize.fn('DATE_FORMAT', sequelize.col('transactionTime'), '%Y-%m-%d'), 'day']],
        group: [sequelize.fn('DAY', sequelize.col('transactionTime'))],
      });

Я получаю следующий вывод

day              Count
2018/09/12        1
2018/09/13        2

Ожидаемый вывод:

day              Count
2018/09/08        0
2018/09/09        0
2018/09/10        0
2018/09/11        0
2018/09/12        1
2018/09/13        2

Помоги мне, я новичок в секвелировании.

...