mysql - 在 Node.js 和 Mysql 中按月过滤数据
问题描述
在 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;
})
};
我有每次在数据库中写入数据时的时间戳,所以现在我需要获取数字 1 月、2 月创建了多少行......
我试过这样的事情:
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 语句过滤,但我不知道如何做到这一点。
有任何想法吗?谢谢
解决方案
这是我看到的简单方法。
也许不理想,但应该适合你的目的。
您只需要运行一个查询。这应该会产生预期的结果。
您可以使用MYSQL 中内置的GROUP BY、COUNT和month来执行此任务。
这是示例:
SELECT COUNT(id) as amount, month(test_date_time) as month FROM test_results GROUP BY month(test_date_time)
这是输出示例:
从响应中您可以看到它给了我结果:
- 在第 8 个月,我有 1231 条记录(金额)
- 在第 11 个月只有 2 个。
希望这可以帮助。
推荐阅读
- wordpress - 如何将 %custom-taxonomy% 添加到永久链接(例如,我们创建的 %subject%)
- java - 不起作用检查按钮是否被按下
- javascript - 能够生成适配器应用程序 - ember.js
- powershell - 浏览器窗口的进程 ID Microsoft Explorer
- db2 - 无法使用凭证(作为 API 或云控制台)连接到 IBM_Cloud DB2 数据库
- reactjs - 从子组件返回时,反应状态被覆盖
- elasticsearch - Net core 2.1 elasticsearch 在开发中工作,它在发布中不起作用
- python - 如何从 Fast.com 获取互联网速度结果
- javascript - TypeScript 接口和联合类型参数
- css - Flexbox 没有在 div 之间应用空间