如何只比较波斯菊数据库中的日期部分

时间:2019-01-15 05:22:46

标签: azure-cosmosdb

我们正在将(EmployeeId,Name,LogDate)数据存储在cosmosdb中。 LogDate数据是日期时间,我们想从宇宙中获取LogDate在“ 2018-01-15”和“ 2018-01-30”之间的数据,这意味着只想比较日期部分。

2 个答案:

答案 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')

输出:

enter image description here

当然,您可以在代码中转换日期时间,而不是使用UDF。

答案 1 :(得分:0)

我来自CosmosDB工程团队。尽管Jay的答案是替代方法,但您仍然可以将DateTimes保留为默认ISO 8601格式的字符串,并在LogDate上创建范围索引。您应该能够使用Cosmos DB SQL查询在DateTime上进行常规比较:

SELECT * FROM root其中root.LogDate在'2018-01-15'和'2018-01-30'之间