Condividi tramite


Aritmetica datetime/timespan

Si applica a: ✅Microsoft Fabric

Kusto supporta l'esecuzione di operazioni aritmetiche sui valori di tipi datetime e timespan.

Operazioni supportate

  • È possibile sottrarre (ma non aggiungere) due datetime valori per ottenere un timespan valore che esprime la differenza. Ad esempio, datetime(1997-06-25) - datetime(1910-06-11) è quanto era vecchioJacques-Yves Cousteau quando morì.

  • È possibile aggiungere o sottrarre due timespan valori per ottenere un timespan valore che corrisponde alla somma o alla differenza. Ad esempio, 1d + 2d è di tre giorni.

  • È possibile aggiungere o sottrarre un timespan valore da un datetime valore. Ad esempio, datetime(1910-06-11) + 1d è la data che Cousteau ha trasformato un giorno prima.

  • È possibile dividere due timespan valori per ottenere il quoziente. Ad esempio, restituisce 1d / 5h4.8. In questo modo è possibile esprimere qualsiasi timespan valore come multiplo di un altro timespan valore. Ad esempio, per esprimere un'ora in secondi, è sufficiente dividere 1h per 1s: 1h / 1s (con il risultato ovvio, 3600).

  • Viceversa, è possibile più un valore numerico (ad esempio double e long) da un timespan valore per ottenere un timespan valore. Ad esempio, è possibile esprimere un'ora e mezzo come 1.5 * 1h.

Esempi

L'ora Unix, nota anche come ora POSIX o epoca UNIX, è un sistema per descrivere un punto nel tempo come numero di secondi trascorsi dalle 00:00:00 giovedì 1 gennaio 1970, ora UTC (Coordinated Universal Time), meno secondi intercalari.

Se i dati includono la rappresentazione dell'ora Unix come numero intero o se è necessaria la conversione, sono disponibili le funzioni seguenti.

L'esempio seguente converte l'ora Unix in utc datetime.

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

Risultato

risultato
2019-01-07 21:45:31.0000000

L'esempio seguente converte utc datetime in ora Unix.

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

Risultato

risultato
1546897531

Per le conversioni temporali unix-epoch, vedere le funzioni seguenti:

  • unixtime_seconds_todatetime()
  • unixtime_milliseconds_todatetime()
  • unixtime_microseconds_todatetime()
  • unixtime_nanoseconds_todatetime()