Datetime / timespan 算术

Kusto 支持对 datetimetimespan 类型的值执行算术运算。

支持的操作

  • 可以将两个 datetime 值相减(但不能相加)来得到一个表示二者之差的 timespan 值。 例如,datetime(1997-06-25) - datetime(1910-06-11) 是 Jacques-Yves Cousteau 去世时的年龄。

  • 可以将两个 timespan 值相加或相减以得到一个二者之和或差的 timespan 值。 例如,1d + 2d 是三天。

  • 可以在一个 datetime 值的基础上加上或减去一个 timespan 值。 例如,datetime(1910-06-11) + 1d 是 Cousteau 年龄增大了一天的日期。

  • 可以将两个 timespan 值相除,得到它们的商。 例如,1d / 5h 的结果为 4.8。 这样就可以将任何 timespan 值表示为另一个 timespan 值的倍数。 例如,若要以秒为单位表示一小时,只需将 1h 除以 1s1h / 1s(结果很明显:3600)。

  • 相反,一个数字值(如 doublelong)可以乘以 timespan 值来得到 timespan 值。 例如,可以将一个半小时表示为 1.5 * 1h

示例

Unix 时间(也称为 POSIX 时间或 UNIX Epoch 时间)是一种系统,用于将某个时间点描述为自协调世界时 (UTC) 1970 年 1 月 1 日星期四 00:00:00 以来经过的秒数(减去闰秒)。

如果数据包括以整数形式表示的 Unix 时间,或者需要转换为这种时间,可使用以下函数。

从 Unix 时间

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

输出

result
2019-01-07 21:45:31.0000000

到 Unix 时间

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

输出

result
1546897531

有关 unix-epoch 时间转换,请参阅以下函数: