Aritmetika tanggalwaktu/rentang waktu

Kusto mendukung eksekusi operasi aritmetika pada nilai jenis datetime dan timespan:

  • Seseorang dapat mengurangi (tetapi tidak menambahkan) dua nilai datetime untuk mendapatkan nilai timespan yang mengekspresikan perbedaannya. Misalnya, datetime(1997-06-25) - datetime(1910-06-11) adalah berapa usia Jacques-Yves Cousteau saat dia meninggal.

  • Seseorang dapat menambahkan atau mengurangi dua nilai timespan untuk mendapatkan nilai timespan yang merupakan jumlah atau perbedaannya. Misalnya, 1d + 2d adalah tiga hari.

  • Seseorang dapat menambahkan atau mengurangi nilai timespan dari nilai datetime. Misalnya, datetime(1910-06-11) + 1d adalah tanggal Cousteau berusia satu hari.

  • Seseorang dapat membagi dua nilai timespan untuk mendapatkan hasil baginya. Misalnya, 1d / 5h memberikan 4.8. Ini memberi seseorang kemampuan untuk mengekspresikan nilai timespan apa pun sebagai kelipatan dari nilai timespan lain. Misalnya, untuk mengekspresikan satu jam dalam hitungan detik, cukup bagi 1h dengan 1s: 1h / 1s (dengan hasil yang jelas, 3600).

  • Sebaliknya, seseorang dapat mengalikan beberapa nilai numerik (seperti double dan long) dengan nilai timespan untuk mendapatkan nilai timespan. Misalnya, seseorang dapat mengekspresikan satu setengah jam sebagai 1.5 * 1h.

Contoh: Waktu Unix

Waktu Unix (juga dikenal sebagai waktu POSIX atau waktu UNIX Epoch) adalah sistem untuk menggambarkan titik waktu sebagai jumlah detik yang telah berlalu sejak 00.00.00 Kamis, 1 Januari 1970, Waktu Universal Terkoordinasi (UTC), minus detik kabisat.

Jika data Anda menyertakan representasi waktu Unix sebagai bilangan bulat, atau Anda memerlukan konversi ke format tersebut, fungsi berikut tersedia:

let fromUnixTime = (t:long)
{ 
    datetime(1970-01-01) + t * 1sec 
};
print result = fromUnixTime(1546897531)
hasil
2019-01-07 21:45:31.0000000
let toUnixTime = (dt:datetime) 
{ 
    (dt - datetime(1970-01-01)) / 1s 
};
print result = toUnixTime(datetime(2019-01-07 21:45:31.0000000))
hasil
1546897531