Azure 在Cosmos数据库中查询文档进行日期比较时如何截断时间

Azure 在Cosmos数据库中查询文档进行日期比较时如何截断时间,azure,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure,Azure Cosmosdb,Azure Cosmosdb Sqlapi,我有一个文档包含这样的属性 { "id":"1bd13f8f-b56a-48cb-9b49-7fc4d88beeac", "name":"Sam", "createdOnDateTime": "2018-07-23T12:47:42.6407069Z" } 我想根据存储为字符串的createdOnDateTime查询文档 询问- SELECT * FROM c where c.createdOnDateTime>='2018-07-23' AND c.cr

我有一个文档包含这样的属性

{
    "id":"1bd13f8f-b56a-48cb-9b49-7fc4d88beeac",
    "name":"Sam",
    "createdOnDateTime": "2018-07-23T12:47:42.6407069Z"    
}
我想根据存储为字符串的
createdOnDateTime
查询文档

询问-

SELECT * FROM c where c.createdOnDateTime>='2018-07-23' AND c.createdOnDateTime<='2018-07-23'
SELECT*FROM c其中c.createdOnDateTime>='2018-07-23'和c.createdOnDateTime请使用来实现您的需求,无需更新
createdOnDateTime
属性

UDF:

函数con(日期){
var myDate=新日期(日期);
var month=myDate.getMonth()+1;

如果(month='2018-07-23'和udf.con(c.createdOnDateTime)CosmosDB客户端正在中存储时间戳,那么这样做的一个很好的原因是它与时间流相匹配。这意味着-您可以对这些字符串进行排序和比较,并按它们所代表的时间对它们进行排序

因此,在这种情况下,您不需要删除时间组件,只需修改传入的参数即可获得所需的结果。如果您需要整个
2018-07-23
日期的所有条目,则可以使用查询:

SELECT * FROM c 
WHERE c.createdOnDateTime >= '2018-07-23' 
  AND c.createdOnDateTime <  '2018-07-24'
从c中选择*
其中c.createdOnDateTime>='2018-07-23'
和c.createdOnDateTime<'2018-07-24'

请注意,此查询可以在
createdOnDateTime
上使用范围索引。问题是,将查询日期更改为使用ISO版本有什么问题?“2016-12-18T00:00:00.00000Z”请注意,采用udf方式将阻止您使用index=>Slooow full scan。这不是一个好的解决方案。让数据库引擎直接为您完成工作,将日期存储在ISO格式中,忘记在开发或执行udf时花费额外的周期。但有没有一种简单的方法来进行分组?我想对记录进行分组没有时间的日期。
SELECT c.id,c.createdOnDateTime FROM c where udf.con(c.createdOnDateTime)>='2018-07-23' AND udf.con(c.createdOnDateTime)<='2018-07-23'
SELECT * FROM c 
WHERE c.createdOnDateTime >= '2018-07-23' 
  AND c.createdOnDateTime <  '2018-07-24'