Yes, at first, this was my idea too.
But, when I had to implement it to convert table field with seconds to format HH:MM:SS (with leading zeros), things went pretty ugly.
for example, Conversation_Time is in ms:
, toUInt32(Conversation_Time/1000) DurationS
, concat(if(intDivOrZero(toUInt32(Conversation_Time/1000), 3600)=0, '00:',
if(intDivOrZero(toUInt32(Conversation_Time/1000), 3600) < 10, concat('0', toString(intDivOrZero(toUInt32(Conversation_Time/1000), 3600)), ':'), concat(toString(intDivOrZero(toUInt32(Conversation_Time/1000), 3600)), ':'))
),
if(intDivOrZero(toUInt32(Conversation_Time/1000) - (intDivOrZero(toUInt32(Conversation_Time/1000), 3600) * 3600), 60)=0, '00',
if(intDivOrZero(toUInt32(Conversation_Time/1000) - (intDivOrZero(toUInt32(Conversation_Time/1000), 3600) * 3600), 60) < 10, concat('0', toString(intDivOrZero(toUInt32(Conversation_Time/1000) - (intDivOrZero(toUInt32(Conversation_Time/1000), 3600) * 3600), 60)), ':'), concat(toString(intDivOrZero(toUInt32(Conversation_Time/1000) - (intDivOrZero(toUInt32(Conversation_Time/1000), 3600) * 3600), 60)), ':'))
) ,
if(toUInt32(Conversation_Time/1000) - (intDivOrZero(toUInt32(Conversation_Time/1000), 3600) * 3600) - (intDivOrZero(toUInt32(Conversation_Time/1000) - (intDivOrZero(toUInt32(Conversation_Time/1000), 3600) * 3600), 60) * 60)=0, '00',
if(toUInt32(Conversation_Time/1000) - (intDivOrZero(toUInt32(Conversation_Time/1000), 3600) * 3600) - (intDivOrZero(toUInt32(Conversation_Time/1000) - (intDivOrZero(toUInt32(Conversation_Time/1000), 3600) * 3600), 60) * 60) < 10, concat('0', toString(toUInt32(Conversation_Time/1000) - (intDivOrZero(toUInt32(Conversation_Time/1000), 3600) * 3600) - (intDivOrZero(toUInt32(Conversation_Time/1000) - (intDivOrZero(toUInt32(Conversation_Time/1000), 3600) * 3600), 60) * 60))), toString(toUInt32(Conversation_Time/1000) - (intDivOrZero(toUInt32(Conversation_Time/1000), 3600) * 3600) - (intDivOrZero(toUInt32(Conversation_Time/1000) - (intDivOrZero(toUInt32(Conversation_Time/1000), 3600) * 3600), 60) * 60)))
)
) hms
which can be replaced with:
, formatDateTime(CAST(toUInt32(Conversation_Time/1000) AS DATETIME), '%H:%M:%S')