Docs 菜单
Docs 主页
/
MongoDB Manual
/ / /

$dateToString(聚合)

在此页面上

  • 定义
  • 兼容性
  • 语法
  • 格式描述符
  • 例子
$dateToString

根据用户指定的格式将日期对象转换为字符串。

可以使用 $dateToString 查找托管在以下环境中的部署:

  • MongoDB Atlas:用于云中 MongoDB 部署的完全托管服务

  • MongoDB Enterprise:基于订阅、自我管理的 MongoDB 版本

  • MongoDB Community:源代码可用、免费使用且可自行管理的 MongoDB 版本

$dateToString 表达式采用以下操作符表达式语法:

{ $dateToString: {
date: <dateExpression>,
format: <formatString>,
timezone: <tzExpression>,
onNull: <expression>
} }

$dateToString 接受包含以下字段的文档:

字段
说明

date

3.6 版本中的更改

要转换为字符串的日期。<dateExpression> 必须是解析为日期时间戳对象标识符的有效表达式

format

可选。 日期格式规范。 <formatString> 可以是任何包含 0 或更多格式说明符的字符串字面量。 有关可用说明符的列表,请参阅格式说明符。

如果未指定,$dateToString 将使用"%Y-%m-%dT%H:%M:%S.%LZ" 作为默认格式。

timezone

Optional. 操作结果的时区。 <tzExpression>必须是有效 表达式 string,可解析为格式为 Olson 时区标识符 的 或 UTC 偏移量 。如果未提供timezone ,则结果将显示在UTC中。

format
示例

Olson Timezone Identifier

"America/New_York"
"Europe/London"
"GMT"

UTC Offset

+/-[hh]:[mm], e.g. "+04:45"
+/-[hh][mm], e.g. "-0530"
+/-[hh], e.g. "+03"

onNull

可选。当 date 为 null 或缺失时要返回的值。参数可以是任何有效的表达式

$dateToString如果未指定,则当date 为 null 或缺失时, 会返回 null。

提示

另请参阅:

<formatString> 中可使用以下格式说明符:

说明符
说明
Possible Values

%d

月中的某一天(2 位数字,补零)

01-31

%G

ISO 8601 格式的年份

0000-9999

%H

小时(2 位数字,填充零,24 小时时钟)

00-23

%j

年月日(3 位数字,填充零)

001-366

%L

毫秒(3 位数字,填充零)

000-999

%m

月份(2 位数字,补零)

01-12

%M

分钟(2 位数字,填充零)

00-59

%S

第二(2 位数字,补零)

00-60

%w

周中的某一天(1-星期日,7-星期六)

1-7

%u

一周中每天的编号(采用 ISO 8601 格式,1-星期一,7-星期日)

1-7

%U

年中的某一周(2 位数字,补零)

00-53

%V

ISO 8601 格式的年中的某一周

01-53

%Y

年份(4 位数字,补零)

0000-9999

%z

与 UTC 的时区偏移。

+/-[hh][mm]

%Z

从 UTC 开始偏移的分钟数。例如,如果时区偏移 (+/-[hhmm]) 为 +0445,则分钟偏移为 +285

+/-mmm

%%

作为文本的百分比字符

%

使用以下文档创建 sales 集合:

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

以下聚合使用 $dateToString 以格式化字符串的形式返回 date 字段:

db.sales.aggregate(
[
{
$project: {
yearMonthDayUTC: { $dateToString: { format: "%Y-%m-%d", date: "$date" } },
timewithOffsetNY: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$date", timezone: "America/New_York"} },
timewithOffset430: { $dateToString: { format: "%H:%M:%S:%L%z", date: "$date", timezone: "+04:30" } },
minutesOffsetNY: { $dateToString: { format: "%Z", date: "$date", timezone: "America/New_York" } },
minutesOffset430: { $dateToString: { format: "%Z", date: "$date", timezone: "+04:30" } }
}
}
]
)

操作返回以下结果:

{
"_id" : 1,
"yearMonthDayUTC" : "2014-01-01",
"timewithOffsetNY" : "03:15:39:736-0500",
"timewithOffset430" : "12:45:39:736+0430",
"minutesOffsetNY" : "-300",
"minutesOffset430" : "270"
}

后退

$dateToParts