我试图按最近7天(逐日
),最近4周(逐周
)和最近12个月(逐月
)查询此表。
我打算用javascript获取日期,逐个事务查询,然后在外部计算每个(周,日,月)的总和,然后创建一个数组来保存这些值。但我的直觉告诉我,通过一个postgres db查询可以获得大部分信息。
所以我的问题是,有没有可能,如果有,如何。
这是我想找个约会对象
const today = new Date();
const firstWeekEnd = new Date(today);
const secondWeekStart = new Date(today);
const secondWeekEnd = new Date(today);
const thirdWeekStart = new Date(today);
const thirdWeekEnd = new Date(today);
const fourthWeekStart = new Date(today);
const fourthWeekEnd = new Date(today);
function formatDate(date) {
let dd = date.getDate();
let mm = date.getMonth() + 1;
const yyyy = date.getFullYear();
if (dd < 10) { dd = `0${dd}`; }
if (mm < 10) { mm = `0${mm}`; }
date = `${yyyy} ${mm}= ${dd}`;
return date;
}
firstWeekEnd.setDate(firstWeekEnd.getDate() - 6);
secondWeekStart.setDate(secondWeekStart.getDate() - 7);
secondWeekEnd.setDate(secondWeekEnd.getDate() - 13);
thirdWeekStart.setDate(thirdWeekStart.getDate() - 14);
thirdWeekEnd.setDate(thirdWeekEnd.getDate() - 20);
fourthWeekStart.setDate(fourthWeekStart.getDate() - 21);
fourthWeekEnd.setDate(fourthWeekEnd.getDate() - 27);
我正在使用nodejs和sequelize
如有任何帮助或想法,我们将不胜感激
如果您正在PostgreSQL中寻找帮助您分组数据的某个函数,那么我有一个肯定的答案date_trunc('week',createdAt)
。它返回一周中的第一天,您可以根据该天对数据进行分组,如下所示:
SELECT date_trunc('week', createdAt ) as start_of_week, sum(transactionTotal)
FROM <your_table_name_here>
GROUP BY date_trunc('week', createdAt )
ORDER BY date_trunc('week', createdAt )
从Sequelize.js开始,您应该使用原始查询来执行这样的SQL查询。