Поделиться через


Datetime / timepan arithmetic

Применимо: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Kusto поддерживает арифметические операции с значениями типов datetime и timespan.

Поддерживаемые операции

  • Можно вычитать (но не добавлять) два datetime значения, чтобы получить timespan значение, указывающее их разницу. Например, datetime(1997-06-25) - datetime(1910-06-11) сколько лет былоJacques-Yves Коусто , когда он умер.

  • Можно добавить или вычитать два timespan значения, чтобы получить timespan значение, которое является их суммой или разницей. Например, 1d + 2d составляет три дня.

  • Можно добавить или вычесть timespan значение из datetime значения. Например, datetime(1910-06-11) + 1d дата Коусто превратилась в один день.

  • Можно разделить два timespan значения, чтобы получить их кворот. Например, 1d / 5h дает 4.8. Это дает возможность выразить любое timespan значение в виде нескольких других timespan значений. Например, чтобы выразить час в секундах, просто разделить на 1h1s: 1h / 1s (с очевидным результатом, 3600).

  • И наоборот, можно несколько числовых значений (например double , и long) по timespan значению, чтобы получить timespan значение. Например, можно выразить час с половиной 1.5 * 1h.

Примеры

Время Unix, которое также известно как время POSIX или эпоха UNIX, представляет собой систему для описания точки во времени как количество секунд, прошедших с 00:00:00 четверг, 1 января 1970 года, координированное универсальное время (UTC), минус скачок секунд.

Если данные включают представление времени Unix в виде целого числа или требуется преобразование в него, доступны следующие функции.

В следующем примере время Unix преобразуется в дату в формате UTC.

let fromUnixTime = (t: long) { 
    datetime(1970-01-01) + t * 1sec 
};
print result = fromUnixTime(1546897531)

Выходные данные

результат
2019-01-07 21:45:31.0000000

В следующем примере дата и время UTC преобразуется в время Unix.

let toUnixTime = (dt: datetime) { 
    (dt - datetime(1970-01-01)) / 1s 
};
print result = toUnixTime(datetime(2019-01-07 21:45:31.0000000))

Выходные данные

результат
1546897531

Сведения о преобразованиях времени в unix см. в следующих функциях: