Tenho uma tabela ClickHouse que contém o seguinte esquema:
`Start` DateTime64(9),
`End` DateTime64(9),
`Duration` Int64 DEFAULT toInt64((toDecimal64(End, 9) - toDecimal64(Start, 9)) * 1000000000),
Start
e End
são DateTime64(9)
campos com precisão de nanossegundos, e também preciso armazenar a diferença entre eles em um Duration
campo que gostaria que o ClickHouse gerasse automaticamente. Tive problemas para encontrar a melhor maneira de converter DateTime64(9)
campos em carimbos de data e hora de época de nanossegundos e, eventualmente, criei uma solução que os converte em decimais e multiplica por uma constante para fornecer a diferença em nanossegundos como um número inteiro.
Isso funciona, parece que estou obtendo os Duration
valores corretos, mas a * 1000000000
parte me parece um cheiro. Existe uma maneira melhor de fazer isso que eu não conheço? Examinei as funções de data do ClickHouse e não consegui encontrar nenhuma que lidasse com precisão de nanossegundos, apenas toUnixTimestamp()
com precisão de segundos.