- Reference >
- Operators >
- Aggregation Pipeline Operators >
- $dateFromParts (aggregation)
$dateFromParts (aggregation)¶
On this page
Definition¶
- 
$dateFromParts¶
- New in version 3.6. - Constructs and returns a Date object given the date’s constituent properties. - The - $dateFromPartsexpression has the following syntax:- You can also specify your constituent date fields in ISO week date format using the following syntax: - The - $dateFromPartstakes a document with the following fields:- Important - You cannot combine the use of calendar dates and ISO week date fields when constructing your - $dateFromPartsinput document.- Field - Required/Optional - Description - year- Required if not using - isoWeekYear- Calendar year. Can be any expression that evaluates to a number. - Value range: - 1-- 9999- If the number specified is outside this range, - $dateFromPartserrors. Starting in MongoDB 4.4, the lower bound for this value is- 1. In previous versions of MongoDB, the lower bound was- 0.- isoWeekYear- Required if not using - year- ISO Week Date Year. Can be any expression that evaluates to a number. - Value range: - 1-- 9999- If the number specified is outside this range, - $dateFromPartserrors. Starting in MongoDB 4.4, the lower bound for this value is- 1. In previous versions of MongoDB, the lower bound was- 0.- month- Optional. Can only be used with - year.- Month. Can be any expression that evaluates to a number. - Defaults to - 1.- Value range: - 1-- 12- Starting in MongoDB 4.0, if the number specified is outside this range, - $dateFromPartsincorporates the difference in the date calculation. See Value Range for examples.- isoWeek- Optional. Can only be used with - isoWeekYear.- Week of year. Can be any expression that evaluates to a number. - Defaults to - 1.- Value range: - 1-- 53- Starting in MongoDB 4.0, if the number specified is outside this range, - $dateFromPartsincorporates the difference in the date calculation. See Value Range for examples.- day- Optional. Can only be used with - year.- Day of month. Can be any expression that evaluates to a number. - Defaults to - 1.- Value range: - 1-- 31- Starting in MongoDB 4.0, if the number specified is outside this range, - $dateFromPartsincorporates the difference in the date calculation. See Value Range for examples.- isoDayOfWeek- Optional. Can only be used with - isoWeekYear.- Day of week (Monday - 1- Sunday- 7). Can be any expression that evaluates to a number.- Defaults to - 1.- Value range: - 1-- 7- Starting in MongoDB 4.0, if the number specified is outside this range, - $dateFromPartsincorporates the difference in the date calculation. See Value Range for examples.- hour- Optional - Hour. Can be any expression that evaluates to a number. - Defaults to - 0.- Value range: - 0-- 23- Starting in MongoDB 4.0, if the number specified is outside this range, - $dateFromPartsincorporates the difference in the date calculation. See Value Range for examples.- minute- Optional - Minute. Can be any expression that evaluates to a number. - Defaults to - 0.- Value range: - 0-- 59Starting in MongoDB 4.0, if the number specified is outside this range,- $dateFromPartsincorporates the difference in the date calculation. See Value Range for examples.- second- Optional - Second. Can be any expression that evaluates to a number. - Defaults to - 0.- Value range: - 0-- 59- Starting in MongoDB 4.0, if the number specified is outside this range, - $dateFromPartsincorporates the difference in the date calculation. See Value Range for examples.- millisecond- Optional - Millisecond. Can be any expression that evaluates to a number. - Defaults to - 0.- Value range: - 0-- 999- Starting in MongoDB 4.0, if the number specified is outside this range, - $dateFromPartsincorporates the difference in the date calculation. See Value Range for examples.- timezone- Optional - <timezone>can be any expression that evaluates to a string whose value is either:- an Olson Timezone Identifier,
such as "Europe/London"or"America/New_York", or
- a UTC offset in the form:- +/-[hh]:[mm], e.g.- "+04:45", or
- +/-[hh][mm], e.g.- "-0530", or
- +/-[hh], e.g.- "+03".
 
 - For more information on expressions, see Expressions. 
- an Olson Timezone Identifier,
such as 
Behavior¶
Value Range¶
Starting in MongoDB 4.4, the supported value range for year and
isoWeekYear is 1-9999. In prior versions of MongoDB, the lower
bound for these values was 0 and the supported value range was
0-9999.
Starting in MongoDB 4.0, if the value specified for fields other than
year, isoWeekYear, and timezone is outside the valid range,
$dateFromParts carries or subtracts the difference from
other date parts to calculate the date.
Value is Greater than the Range¶
Consider the following $dateFromParts expression where
the month field value is 14, which is 2 months greater than the
maximum value of 12 months(or 1 year):
The expression calculates the date by increasing the year by 1
and setting the month to 2 to return:
Value is Less than the Range¶
Consider the following $dateFromParts expression where
the month field value is 0, which is 1 month less than the
minimum value of 1 month:
The expression calculates the date by decreasing the year by 1
and setting the month to 12 to return:
Time Zone¶
When using an Olson Timezone Identifier in the <timezone>
field, MongoDB applies the DST offset
if applicable for the specified timezone.
For example, consider a sales collection with the following document:
The following aggregation illustrates how MongoDB handles the DST
offset for the Olson Timezone Identifier. The example uses the
$hour and $minute operators to return the
corresponding portions of the date field:
The operation returns the following result:
Example¶
The following aggregation uses $dateFromParts to
construct three date objects from the provided input fields:
The operation returns the following result: