云函数代码时间格式调整,查找时间段数据
修改云函数代码页面输入的时间格式,查找时间段数据
云函数代码页面输入的时间格式为2023-07-18,而云后台的时间格式为2023.7.13 14:31:44,需要调整时间格式以查找时间段的所有数据。
调整时间格式的步骤
- 在云函数代码中,将输入的日期字符串进行处理,将其转换为与数据库中存储的日期格式相匹配的字符串。
const startDate1 = event.startDate.split("-");
const endDate1 = event.endDate.split("-");
const startDate2 = startDate1.join('.');
const endDate2 = endDate1.join('.');
const startDatestr = startDate2 + ' 00:00:00';
const endDatestr = endDate2 + ' 00:00:00';
在这里,我们将输入的日期字符串分割为年、月、日的数组形式。然后,使用join()方法将数组元素连接为带有点号分隔符的字符串,并添加时间部分(00:00:00)。
- 在查询语句中使用新的日期字符串作为条件来搜索时间段内的数据。
query = query.where({
date: db.command.gte(startDatestr).and(db.command.lte(endDatestr))
});
在这里,我们使用db.command.gte()和db.command.lte()方法来指定起始日期和结束日期的条件。这将返回时间段内的所有数据。
示例代码
exports.main = async (event, context) => {
const db = cloud.database();
const yddata = db.collection('yddata');
const pageSize = 1000; // 定义每页显示的数据数量
const startIndex = 0; // 定义起始索引值
let query = yddata.where({});
const startDate1 = event.startDate.split("-");
const endDate1 = event.endDate.split("-");
const startDate2 = startDate1.join('.');
const endDate2 = endDate1.join('.');
const startDatestr = startDate2 + ' 00:00:00';
const endDatestr = endDate2 + ' 00:00:00';
if (event.mailNumber) {
query = query.where({ mailNumber: event.mailNumber });
}
if (event.startDate && event.endDate) {
query = query.where({
date: db.command.gte(startDatestr).and(db.command.lte(endDatestr))
});
}
const searchData = await query.orderBy('date', 'desc').skip(startIndex).limit(pageSize).get().then(res => {
if (res.data.length > 0) {
const data = res.data[0];
return {
searchData: data
// mailNumber:data.mailNumber,
// images: data.images,
// describe: data.describe,
// date: data.date
};
} else {
return {
error: '未找到相关数据'
};
}
}).catch(err => {
console.error(err);
return {
error: err
};
});
return searchData;
}
总结
通过将输入日期转换为数据库中存储的格式,并使用适当的查询条件,可以有效地根据时间段查找数据。请注意,您可能还需要根据实际情况对日期格式进行调整。
原文地址: https://www.cveoy.top/t/topic/pT0u 著作权归作者所有。请勿转载和采集!