Выберите данные, где Datetime составляет менее 30 дней. Cosmos Db - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь выбрать данные с датой менее 30 дней в Cosmos Db, но получаю ошибку в своем запросе. Вот мой запрос:

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

1 Ответ

0 голосов
/ 05 октября 2019

Если вы ссылаетесь на документы

, вы можете хранить DateTimes как метки времени Unix, то есть как число, представляющее количество прошедших секунд с 1 января 1970 года. AzureСвойство внутренней метки времени (_ts) Cosmos DB следует этому подходу. Вы можете использовать класс UnixDateTimeConverter для сериализации DateTimes в виде чисел.

Я бы предложил вам сериализовать 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...