如何在Redash的MongoDB查询中将ISO日期转为dd-MM-yyyy HH:ss格式导入Google Sheets?
解决方案:在MongoDB查询中直接转换ISO日期为目标格式
没问题!要让Redash返回的MongoDB查询结果里,ISO日期直接变成dd-MM-yyyy HH:ss格式,不用再在Google Sheets里折腾公式,咱们可以用MongoDB的聚合管道配合$dateToString操作符来实现,一步到位。
核心思路
MongoDB的$dateToString操作符可以直接把日期类型字段转换成指定格式的字符串,你只需要在查询的$project阶段配置好格式规则,Redash返回的结果就会是现成的目标格式,导入Google Sheets时直接可用。
具体查询示例
假设你的集合名为your_collection,存储ISO日期的字段是iso_date,同时你还需要保留其他字段(比如user_id、order_amount),可以用下面的聚合查询:
db.your_collection.aggregate([ // 可选:如果有查询条件,先加$match阶段过滤数据 { $match: { // 这里写你的过滤条件,比如 order_status: "completed" } }, // 关键:用$project转换日期格式并保留需要的字段 { $project: { user_id: 1, order_amount: 1, formatted_date: { $dateToString: { format: "%d-%m-%Y %H:%S", date: "$iso_date", // 可选:指定时区,避免日期偏移,根据你的业务时区调整 timeZone: "Asia/Shanghai" } } } } ])
参数说明
format: "%d-%m-%Y %H:%S":对应你要的dd-MM-yyyy HH:ss格式:%d:两位数字的日期(比如05、23)%m:两位数字的月份(比如03、12)%Y:四位数字的年份(比如2024)%H:24小时制的两位数字小时(比如09、21)%S:两位数字的秒数(比如07、59)
date: "$iso_date":指定要转换的日期字段(替换成你实际的字段名)timeZone:可选参数,如果你的业务有特定时区需求,加上它可以避免日期因时区转换出现偏差。
导入Google Sheets的效果
把这个查询在Redash中配置好,获取查询结果的共享链接后,用Google Sheets的IMPORTDATA函数导入时,formatted_date列直接就是dd-MM-yyyy HH:ss格式的字符串,不需要再用TEXT或其他公式转换啦。
内容的提问来源于stack exchange,提问作者A. Laloo




