$dateToString (aggregation)

在本页面

$dateToString

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

$dateToString表达式具有以下 运算符表达式语法:

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

$dateToString需要具有以下字段的文档:

字段 描述
date 在版本3.6中更改。
转换为字符串的日期。<dateExpression>必须是可解析为Date, Timestamp或 ObjectID的有效表达式。
format 可选的。日期格式规范。<formatString>可以是任何字符串文字,包含0或多个格式说明符。有关可用说明符的列表,请参阅“ 格式说明符” 。
如果未指定,则$dateToString使用 "%Y-%m-%dT%H:%M:%S.%LZ"默认格式。
在版本4.0中更改:format如果featureCompatibilityVersion(fCV)设置为"4.0"或更大,则此字段为可选 。有关fCV的更多信息,请参见 setFeatureCompatibilityVersion
timezone Optional.运算结果的时区。 <tzExpression>必须是一个有效的表达式,可以解析为格式为Olson时区标识符或 UTC偏移量的字符串。如果未timezone提供,结果将显示在中UTC

1. 奥尔森时区标识符:
a. "America/New_York"
b. "Europe/London"
c. "GMT"
2. UTC偏移:
a. +/-[hh]:[mm], e.g. "+04:45"
b. +/-[hh][mm], e.g. "-0530"
c. +/-[hh], e.g. "+03"

3.6版的新功能。
onNull 可选的。如果date为null或缺少,则返回的值。参数可以是任何有效的表达式。
如果未指定,$dateToString则如果datenull为null或缺少,则返回null 。
版本4.0中的新功能:要求featureCompatibilityVersion(fCV)设置为 "4.0"或更高。有关fCV的更多信息,请参见 setFeatureCompatibilityVersion

也可以看看

$toString$convert

格式说明符

以下格式说明符可用于 <formatString>

说明符 描述 可能的值
%d 每月的日期(2位数字,零填充) 01--31
%G ISO 8601格式的年份
3.4版的新功能。
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-Monday,7-Sunday)
3.4版的新功能。
1--7
%U 一年中的星期(2位数字,零填充) 00--53
%V 一年中的星期,采用ISO 8601格式
3.4版的新功能。
01--53
%Y 年(4位数字,零填充) 0000--9999
%z 与UTC的时区偏移量。
3.6版的新功能。
+/-[hh][mm]
%Z 分钟数从UTC偏移为数字。例如,如果时区偏移量(+/-[hhmm])为+0445,则分钟偏移量为+285
3.6版的新功能。
+/-mmm
%% 文字字符百分比 %

例子

考虑sales包含以下文档的集合:

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

以下聚合用于$dateToStringdate字段作为格式化的字符串返回:

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"
}

译者:李冠飞

校对:

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""