努力将 zoneddatetime 字符串转换为 mongodb shell 的日期
Struggling to convert zonedatetime string to date with mongodb shell
我有这些 mongo 文档,日期如下:这个日期是 java: ZonedDateTime.now(),但它作为字符串进入 mongo:
db.test.insert({"dateString" : "2020-07-24T11:06:53.975+02:00[GMT+02:00]"})
所以我想提取一份报告,但将其格式化为最新格式,这样我就可以在管道中做一些不同的事情:
尝试过:
db.test.aggregate([{$project: {date: {"$dateFromString": {"dateString": "$dateString", "format": "yyyy-MM-dd'T'HH:mm:ss", "timezone": "Etc/GMT+2"}}}}])
但我似乎无法正确设置格式:
“errmsg”:“解析日期字符串‘2020-07-24T11:06:53.975+02:00[GMT+02:00]’时出错;0:未找到格式文字‘2’;1:未找到格式文字’0 '; 2: 格式文字未找到 '2'; 3: 格式文字未找到 '0'; 5: 格式文字未找到 '0'; 6: 格式文字未找到 '7'; 8: 格式文字未找到 '2 '; 9: 未找到格式文字 '4'; 10: 未找到格式文字 'T'; 11: 未找到格式文字 '1'; 12: 未找到格式文字 '1'; 13: 未找到格式文字':'; 14: 未找到格式文字 '0'; 15: 未找到格式文字 '6'; 16: 未找到格式文字 ':'; 17: 未找到格式文字 '5'; 18: 未找到格式文字'3'; 19: 格式文字未找到 '.'; 20: 格式文字未找到 '9'; 21: 格式文字未找到 '7'; 22: 格式文字未找到 '5'; 23: 尾随数据 '+ '"
日期运算符不理解自定义格式,也不理解偏移时区
$substr
到 select 日期只能从 0 到 23 个字符
- 将时区设置为“GMT”
db.test.aggregate([
{
$project: {
date: {
"$dateFromString": {
"dateString": {
"$substr": [ "$dateString", 0, 23 ]
},
"timezone": "GMT"
}
}
}
}
])
我有这些 mongo 文档,日期如下:这个日期是 java: ZonedDateTime.now(),但它作为字符串进入 mongo:
db.test.insert({"dateString" : "2020-07-24T11:06:53.975+02:00[GMT+02:00]"})
所以我想提取一份报告,但将其格式化为最新格式,这样我就可以在管道中做一些不同的事情:
尝试过:
db.test.aggregate([{$project: {date: {"$dateFromString": {"dateString": "$dateString", "format": "yyyy-MM-dd'T'HH:mm:ss", "timezone": "Etc/GMT+2"}}}}])
但我似乎无法正确设置格式:
“errmsg”:“解析日期字符串‘2020-07-24T11:06:53.975+02:00[GMT+02:00]’时出错;0:未找到格式文字‘2’;1:未找到格式文字’0 '; 2: 格式文字未找到 '2'; 3: 格式文字未找到 '0'; 5: 格式文字未找到 '0'; 6: 格式文字未找到 '7'; 8: 格式文字未找到 '2 '; 9: 未找到格式文字 '4'; 10: 未找到格式文字 'T'; 11: 未找到格式文字 '1'; 12: 未找到格式文字 '1'; 13: 未找到格式文字':'; 14: 未找到格式文字 '0'; 15: 未找到格式文字 '6'; 16: 未找到格式文字 ':'; 17: 未找到格式文字 '5'; 18: 未找到格式文字'3'; 19: 格式文字未找到 '.'; 20: 格式文字未找到 '9'; 21: 格式文字未找到 '7'; 22: 格式文字未找到 '5'; 23: 尾随数据 '+ '"
日期运算符不理解自定义格式,也不理解偏移时区
$substr
到 select 日期只能从 0 到 23 个字符- 将时区设置为“GMT”
db.test.aggregate([
{
$project: {
date: {
"$dateFromString": {
"dateString": {
"$substr": [ "$dateString", 0, 23 ]
},
"timezone": "GMT"
}
}
}
}
])