API-запрос Cosmos db sql с датой и временем в состоянии ГДЕ - PullRequest
1 голос
/ 10 января 2020

Попытка получить те документы, у которых дата изменения (datetime) равна (currentdate -7), но НЕ работает, псевдокод, как показано ниже

"SELECT * FROM c где c. LastModifiedDate = (GetCurrentDate-7) "

Как это сделать, используя cosmosdb sql api? без udf, потому что у нас есть функция Azure, основанная на триггере таймера, которая запрашивает Cosmos DB, используя выше SQL, запрос напрямую, когда он запускается каждый раз и связывает результаты с параметром функции.

    [FunctionName("TimerCosmosDbWriteExample")]
    public static async Task Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer,
        TraceWriter log,
        [CosmosDB(
            databaseName: "Database",
            collectionName: "Collection",
            ConnectionStringSetting = "MyConnectionString",
            SqlQuery = "SELECT * FROM c where c.LastModifiedDate = GetCurrentDate-7")] IEnumerable<Entity> documents)
    {
     //function body -- loop through retrieved documents & process it 
    }

1 Ответ

0 голосов
/ 13 января 2020

У меня есть 2 точки обзора для вашей справки:

1. Поскольку вы вызываете запрос sql в функции azure, вы можете вычислить currentDate-7 с помощью кода, а затем передать его в запрос sql как параметр. Это обычное использование, и оно просто соответствует формату столбца LastModifiedDate.

2. Я не знаю, почему вы сказали, что не можете использовать udf с запросом sql в azure функция, это не имеет смысла. Как я знаю, UDF является частью SQL. Пожалуйста, обратитесь к моему предыдущему случаю: Запросите конкретные c данные временного диапазона из базы данных cosmos и сохраните их в базе данных sql через azure фабрику данных

...