K2 blackpearl: Создать DateTime[] из полей данных

Я не могу понять, как использовать функцию DateTime Maximum с несколькими полями данных. У меня есть 2 (DateTime) поля данных, которые я хочу получить максимальное значение.

Поле "значения" позволяет вводить только литерал или опускать в ОДНОМ поле. Как я могу создать массив из моих 2 полей?

Спасибо!

введите описание изображения здесь

1 ответ

Решение

Обь

Я думаю, что проблема у вас заключается в том, что ввод не дата, а массив дат: DateTime[]

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

Эта функция работает так, что вам нужно дать ей массив и, конечно, второй параметр - это дата.

Для этого вы можете использовать smartobject, который вернет вам список даты и времени (когда вы вызываете этот список, убедитесь, что вы не возвращаете только первое, это значение по умолчанию).

Функция будет работать нормально и сообщит вам, какая из дат в этом списке является "максимальной".

Теперь, если вам действительно нужно использовать даты в этих полях данных, вам сначала нужно преобразовать эти 2 datetime в массив datetime. К сожалению, я не знаю о функции, способной сделать это (я могу ошибаться...).

Тем не менее я вижу 3 варианта:

  1. Вы пишете пользовательскую функцию, которая будет делать именно это: взять 2 ввода и вернуть их массив (в статье базы знаний объясняется, как это сделать)
  2. Вы используете хранимую процедуру (которую вы вызываете через смарт-объект), которая преобразует ваши 2 данные в массив, и затем вы можете использовать функцию, которую вы упомянули 3. Я думаю, что вы можете упростить еще больше, позволив хранимой процедуре найти максимум для вас. Увидеть ниже.

Простая версия для #3 будет:

declare @D1 datetime

declare @D2 datetime
SET @D1 = getdate()
SET @D2 = getdate()+100

if (@D1>@D2)
    select @D1
else
    select @D2

Надеюсь, это поможет.

Другие вопросы по тегам