Фильтрация данных по месяцам в Node.js и Mysql - PullRequest
0 голосов
/ 20 февраля 2019

Каков наилучший подход к фильтрации данных по месяцам в базе данных MYSQL и серверной части NodeJS?

У меня есть все данные в моей переменной результатов, которые я анализирую для ejs.

let sql = "SELECT * FROM test_results";
    exports.home = function (req, res, error) {
    pool.getConnection(function (err, connection) {
        if (err) throw err; // not connected!
        connection.query(sql, function (err, results, fields) {
            if (err) throw error;
            res.render('home/index', {
                moment: moment,
                results: results
            });
        });
        connection.release();
        if (err) throw error;
    })
};

У меня есть отметки времени каждого раза, когда в БД записывались данные, так что теперь мне нужно получить число. Сколько строк было создано в январе, феврале ...

Я пробовал такие вещи, какthis:

connection.query("SELECT * FROM test_results WHERE test_date_time BETWEEN '2018-01-01 05:00:00' and '2018-01-31 05:00:00'", function(err, results, fields) {

и я делал это каждый месяц, а затем анализировал данные в ejs.Но я не думаю, что это хороший подход.Также мне нужны все результаты на стороне клиента, чтобы я мог работать с ними, поэтому я не знаю, есть ли способ фильтровать данные с помощью JS, а не в запросе SQL.

Я пытался конвертировать метки времени с моментом, а затемОтфильтруйте с помощью оператора if, но я не понял, как это сделать.

Есть идеи?Спасибо

1 Ответ

0 голосов
/ 20 февраля 2019

Вот простой подход, который я вижу.

Может быть, не идеал, но должен соответствовать вашей цели.

И вам нужно выполнить только один запрос.Это должно дать желаемый результат.

Вы можете использовать GROUP BY , COUNT и month , встроенные в MYSQL, для выполнения этой задачи.

Вот пример:

SELECT COUNT(id) as amount, month(test_date_time) as month FROM test_results GROUP BY month(test_date_time)

И это пример вывода:

enter image description here

Отответ вы можете видеть, что это дает мне результат:

  • в месяце номер 8 я получил 1231 записей (сумма)
  • в месяц 11 только 2.

Надеюсь, это поможет.

...