MongoDB中查询字符串类型timestamp字段的最大最小值
查询字符串格式Timestamp字段的最大/最小值
由于你的myUpdateTime字段是ISO 8601标准格式的字符串(示例:"2021-11-08T17:42:30.650Z"),这类字符串的排序逻辑和时间先后完全一致,所以可以直接用常规聚合函数查询最大最小值,也可以转换为原生时间类型后查询(更严谨)。以下是几种主流数据库的实现方式:
1. MySQL
直接用字符串排序查询
SELECT MAX(myUpdateTime) AS max_update_time, MIN(myUpdateTime) AS min_update_time FROM your_table_name;
转换为时间类型后查询(更严谨)
SELECT MAX(STR_TO_DATE(myUpdateTime, '%Y-%m-%dT%H:%i:%s.%fZ')) AS max_update_time, MIN(STR_TO_DATE(myUpdateTime, '%Y-%m-%dT%H:%i:%s.%fZ')) AS min_update_time FROM your_table_name;
2. PostgreSQL
直接用字符串排序查询
SELECT MAX(myUpdateTime) AS max_update_time, MIN(myUpdateTime) AS min_update_time FROM your_table_name;
转换为时间类型后查询
SELECT MAX(TO_TIMESTAMP(myUpdateTime, 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"')) AS max_update_time, MIN(TO_TIMESTAMP(myUpdateTime, 'YYYY-MM-DD"T"HH24:MI:SS.US"Z"')) AS min_update_time FROM your_table_name;
3. MongoDB
直接用字符串排序查询
db.your_collection.aggregate([ { $group: { _id: null, max_update_time: { $max: "$myUpdateTime" }, min_update_time: { $min: "$myUpdateTime" } } } ])
转换为时间类型后查询
db.your_collection.aggregate([ { $group: { _id: null, max_update_time: { $max: { $toDate: "$myUpdateTime" } }, min_update_time: { $min: { $toDate: "$myUpdateTime" } } } } ])
注意:如果字符串格式非标准ISO 8601,需先统一格式再执行查询,但你的示例为标准格式,直接用字符串聚合即可得到正确结果。
内容的提问来源于stack exchange,提问作者Hello
相关产品推荐
相关产品推荐

