如何将存储为 string/datetime(两者)的日期转换为 MongoDB 中的日期时间?
How to convert date stored as string/datetime(both) to only datetime in MongoDB?
我正在处理一个字段存储为字符串(%Y-%m-%d)或日期时间(ISODate Format ex- 2020-05- 16T00:00:00.000+00:00)。在 Python 上获取相同内容并使用 $gte/$lte 时,字符串类型值被排除在匹配之外。
我尝试使用 $dateFromString 将字段转换为日期时间,但由于存在日期时间格式的值,因此抛出以下错误:
$dateFromString 要求 'dateString' 是一个字符串,发现:日期值为 2019-05-31T00:00:00.000Z
同样尝试使用 $dateToString 也会抛出类似的错误,因为值在同一字段中存储为字符串:
无法从 BSON 类型字符串转换为 Date。
同样使用 $toDate 会引发以下错误,我对此一无所知:解析日期字符串时出错 'Invalid date'; 0:不允许将时区标识符作为字符串的一部分传递 'I'; 8:双时区规范'd'; 6:双时区规范'd'.
任何人都可以提出解决方案,因为我似乎找不到任何方法来处理这个特定问题吗?
$toDate
是 $convert
的便捷包装
您可以将字符串转换为日期,同时保留任何未正确转换的值,例如
{$convert: {
input: "$fieldname",
to: "date",
onError: "$fieldname",
onNull: "$fieldname"
}}
我正在处理一个字段存储为字符串(%Y-%m-%d)或日期时间(ISODate Format ex- 2020-05- 16T00:00:00.000+00:00)。在 Python 上获取相同内容并使用 $gte/$lte 时,字符串类型值被排除在匹配之外。
我尝试使用 $dateFromString 将字段转换为日期时间,但由于存在日期时间格式的值,因此抛出以下错误: $dateFromString 要求 'dateString' 是一个字符串,发现:日期值为 2019-05-31T00:00:00.000Z
同样尝试使用 $dateToString 也会抛出类似的错误,因为值在同一字段中存储为字符串: 无法从 BSON 类型字符串转换为 Date。
同样使用 $toDate 会引发以下错误,我对此一无所知:解析日期字符串时出错 'Invalid date'; 0:不允许将时区标识符作为字符串的一部分传递 'I'; 8:双时区规范'd'; 6:双时区规范'd'.
任何人都可以提出解决方案,因为我似乎找不到任何方法来处理这个特定问题吗?
$toDate
是 $convert
您可以将字符串转换为日期,同时保留任何未正确转换的值,例如
{$convert: {
input: "$fieldname",
to: "date",
onError: "$fieldname",
onNull: "$fieldname"
}}