В привязке функций Azure есть ли способ запросить в базе данных Cosmos документы, основанные на дате относительно сегодняшнего дня? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть функция Azure с привязкой Cosmos DB. Я хочу получить все документы с датой в будущем.

Как-то так будет работать ...

SqlQuery = "SELECT * FROM c WHERE c.Filter = {FilterTerm} AND c.SomeDate < '" + DateTime.UtcNow + "'")]

За исключением того факта, что привязка находится в атрибуте, это означает, что они должны быть постоянным выражением.

Насколько я могу судить, в Cosmos DB нет встроенных функций (как, например, GetDate() в T-SQL ).

Так что в настоящее время я опрашиваю лота и выполняю фильтрацию даты в памяти. Это работает, но это означает, что трафик БД намного больше, чем хотелось бы.

Есть ли способ сделать это более эффективно?

1 Ответ

0 голосов
/ 06 сентября 2018

Хотя в Cosmos DB cosmos db нет встроенных функций, таких как GetDate (), вы можете использовать UDF для реализации аналогичной функции.

UDF:

function convertTime(unix_timestamp){

      var date = new Date();
      return date;
    //   var year = date.getFullYear();
    //   var month = ("0"+(date.getMonth()+1)).substr(-2);
    //   var day = ("0"+date.getDate()).substr(-2);
    //   var hour = ("0"+date.getHours()).substr(-2);
    //   var minutes = ("0"+date.getMinutes()).substr(-2);
    //   var seconds = ("0"+date.getSeconds()).substr(-2);

    //   return year+"-"+month+"-"+day+" "+hour+":"+minutes+":"+seconds;
}

Вы можете конвертировать любой формат, который вы хотите, чтобы соответствовать вашему полю.

SQL:

SELECT c.SomeDate < udf.nowDate() FROM c

Любая проблема, пожалуйста, дайте мне знать.

...