Fix This Page
Navigation

$dateToString (aggregation)

Definition

$dateToString

New in version 3.0.

Converts a date object to a string according to a user-specified format.

The $dateToString expression has the following syntax:

{ $dateToString: { format: <formatString>, date: <dateExpression> } }

The <formatString> can be any string literal, containing 0 or more format specifiers. For a list of specifiers available, see Format Specifiers.

The <dateExpression> can be any expression that evaluates to a date. For more information on expressions, see Expressions.

Format Specifiers

The following format specifiers are available for use in the <formatString>:

Specifiers Description Possible Values
%Y Year (4 digits, zero padded) 0000-9999
%m Month (2 digits, zero padded) 01-12
%d Day of Month (2 digits, zero padded) 01-31
%H Hour (2 digits, zero padded, 24-hour clock) 00-23
%M Minute (2 digits, zero padded) 00-59
%S Second (2 digits, zero padded) 00-60
%L Millisecond (3 digits, zero padded) 000-999
%j Day of year (3 digits, zero padded) 001-366
%w Day of week (1-Sunday, 7-Saturday) 1-7
%U Week of year (2 digits, zero padded) 00-53
%% Percent Character as a Literal %
New in version 3.4:
%G Year in ISO 8601 format 0000-9999
%V Week of Year in ISO 8601 format 1-53
%u Day of week number in ISO 8601 format (1-Sunday, 7-Saturday) 1-7

Example

Consider a sales collection with the following document:

{
  "_id" : 1,
  "item" : "abc",
  "price" : 10,
  "quantity" : 2,
  "date" : ISODate("2014-01-01T08:15:39.736Z")
}

The following aggregation uses the $dateToString to return the date field as formatted strings:

db.sales.aggregate(
   [
     {
       $project: {
          yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$date" } },
          time: { $dateToString: { format: "%H:%M:%S:%L", date: "$date" } }
       }
     }
   ]
)

The operation returns the following result:

{ "_id" : 1, "yearMonthDay" : "2014-01-01", "time" : "08:15:39:736" }