我正在寻找一种方法,根据 CosmosDB 中的出生日期来获取一个人的年龄。 我在文档中读到,他们最近在此表单上在容器级别实现了“计算属性”:
{
"computedProperties": [
{
"name": "cp_Age",
"query": "SELECT VALUE DateTimeDiff('YYYY', c.DateOfBirth, GetCurrentDateTime()) FROM c"
}
]
}
在我的例子中,DateOfBirth 属性是 DateOnly,因此 CosmosDB 将其值存储为“2002-12-23”。
上面的代码计算两个日期之间的年份差,但并不总是给出正确的年龄值,因为生日那天可能没有出现在当年。
也许使用 UDF 可以更好地实现这一点...
到目前为止,有人已经实现了类似的东西吗?
提前致谢
事实证明,CosmosDB 函数接受 DateOnly 作为参数以及 ISO 8601 格式的日期,因此,基于与同一问题相关的旧 SQL 答案(使用 SQL 计算年龄)我已经成功获得了所需的结果使用可用的 CosmosDB 函数的结果:
{
"name": "cp_Age",
"query": "SELECT VALUE DateTimeDiff('YYYY', u.DateOfBirth, GetCurrentDateTime()) - IIF((DateTimePart('mm', u.DateOfBirth) > DateTimePart('mm', GetCurrentDateTime())) OR ((DateTimePart('mm', u.DateOfBirth) = DateTimePart('mm', GetCurrentDateTime())) AND ((DateTimePart('dd', u.DateOfBirth) > DateTimePart('dd', GetCurrentDateTime())))),1,0) FROM u"
}
这是一个相当长的表达式,但效果很好。如果您发现有更高效的方法,请显示您的答案...