我们正在将(EmployeeId,Name,LogDate)数据存储在cosmosdb中。 LogDate数据是日期时间,我们想从宇宙中获取LogDate在“ 2018-01-15”和“ 2018-01-30”之间的数据,这意味着只想比较日期部分。
答案 0 :(得分:2)
基于official document中的语句:
或者,您可以将DateTimes存储为Unix时间戳,即 代表自1月1日以来经过的秒数的数字 1970年。AzureCosmos DB的内部时间戳(_ts)属性遵循此方法。您可以使用UnixDateTimeConverter类进行序列化 日期时间为数字。
因此,我建议您将DateTimes序列化为数字以与条件进行比较。
您可以在sql中使用User Defined Function:
UDF:
function convertTime(datetime){
datetime = datetime.replace(/-/g,'/')
if(datetime){
var date = new Date(datetime);
}else{
var date = new Date();
}
time1 = date.getTime();
return time1;
}
SQL:
SELECT c.LogDate FROM c
where udf.convertTime(c.LogDate) > udf.convertTime('2018-01-15')
and udf.convertTime(c.LogDate) < udf.convertTime('2018-02-20')
输出:
当然,您可以在代码中转换日期时间,而不是使用UDF。
答案 1 :(得分:0)
我来自CosmosDB工程团队。尽管Jay的答案是替代方法,但您仍然可以将DateTimes保留为默认ISO 8601格式的字符串,并在LogDate上创建范围索引。您应该能够使用Cosmos DB SQL查询在DateTime上进行常规比较:
SELECT * FROM root其中root.LogDate在'2018-01-15'和'2018-01-30'之间