选择日期时间少于30天的数据Cosmos Db

时间:2019-10-04 20:38:03

标签: azure-cosmosdb

我试图在Cosmos Db中选择日期少于30天的数据,但是查询出现错误。这是我的查询:

SELECT * FROM c where c.Field = 'value' AND DATEDIFF(DAY, c.TimeStamp, GETDATE()) = 30

1 个答案:

答案 0 :(得分:0)

如果您引用docs

  

您可以将DateTimes存储为Unix时间戳,即数字   代表自1970年1月1日起经过的秒数。   Azure Cosmos DB的内部时间戳(_ts)属性遵循此   方法。您可以使用UnixDateTimeConverter类进行序列化   日期时间为数字。

我建议您将DateTimes序列化为数字以与条件进行比较。您当然可以使用用户定义函数将其转换为

UDF:

function convertToDate(datetime){
    datetime = datetime.replace(/-/g,'/')  
    if(datetime){
        var date = new Date(datetime);
    }else{
        var date = new Date();
    }
    opDate = date.getTime(); 
    return opDate;
}

您可以编写查询以比较日期并获取

SELECT c.LogDate FROM c
where udf.convertTime(c.TimeStamp) > udf.convertTime('2019-09-05') 
and udf.convertTime(c.TimeStamp) < udf.convertTime('2019-10-05')