Qual é a melhor maneira de converter um TIMESTAMP em um BIGINT no Azure Synapse. Eu tentei isso (que funciona), mas parece desajeitado. Existe uma maneira melhor, mais concisa e eficiente de fazer a mesma coisa?
SELECT CURRENT_TIMESTAMP AS CURR_TS,
CONVERT(BIGINT,
CONVERT(CHAR(8), CURRENT_TIMESTAMP, 112) +
REPLACE(CONVERT(CHAR(12), CURRENT_TIMESTAMP, 114), ':', '')) AS CURR_TS_NUM
Um pouco mais compacto e apenas uma chamada para
CURRENT_TIMESTAMP
, você pode usarCONVERT
com seu switch de formato (121)TRANSLATE
eeREPLACE
para arrumar. Isso reduz a instrução de seis chamadas de função individuais para quatro. Você também pode usarFORMAT
, que é apenas duas chamadas de função:Gostaria de consultar a necessidade de armazenar esses valores no entanto. Você provavelmente deveria estar armazenando um carimbo de data/hora convencional para registros de eventos, então por que também armazenar essa forma de carimbo de data/hora de forma codificada que você precisa descompactar se quiser usar? O registro em uma tabela com uma coluna de identidade tem um efeito semelhante. Algo para pensar sobre.