运算符 $dateDiff
计算各种单位(如年、月、日等)中的两个日期之间的差异。它可用于确定数据集中两个时间戳之间的持续时间。
语法
$dateDiff: {
startDate: <expression>,
endDate: <expression>,
unit: <string>,
timezone: <string>, // Optional
startOfWeek: <string> // Optional
}
参数
说明 | |
---|---|
startDate |
计算的开始日期。 |
endDate |
计算的结束日期。 |
unit |
测量差异的时间单位。 有效值包括:year 、、、quarter 、month week day 、hour minute 、。 second millisecond |
timezone |
可选。 用于计算的时区。 |
startOfWeek |
可选。 一周的开始日。 有效值为:Sunday 、、、Monday 、Tuesday Wednesday Thursday 、。 Friday Saturday |
示例
计算促销事件的开始日期和结束日期之间的天数差异:
db.collection.aggregate([
{
$project: {
eventName: 1,
startDate: {
$dateFromParts: {
year: "$promotionEvents.promotionalDates.startDate.Year",
month: "$promotionEvents.promotionalDates.startDate.Month",
day: "$promotionEvents.promotionalDates.startDate.Day"
}
},
endDate: {
$dateFromParts: {
year: "$promotionEvents.promotionalDates.endDate.Year",
month: "$promotionEvents.promotionalDates.endDate.Month",
day: "$promotionEvents.promotionalDates.endDate.Day"
}
},
durationInDays: {
$dateDiff: {
startDate: {
$dateFromParts: {
year: "$promotionEvents.promotionalDates.startDate.Year",
month: "$promotionEvents.promotionalDates.startDate.Month",
day: "$promotionEvents.promotionalDates.startDate.Day"
}
},
endDate: {
$dateFromParts: {
year: "$promotionEvents.promotionalDates.endDate.Year",
month: "$promotionEvents.promotionalDates.endDate.Month",
day: "$promotionEvents.promotionalDates.endDate.Day"
}
},
unit: "day"
}
}
}
}
])