Sou novo no Spark e no Databricks Sql. Eu tenho a consulta abaixo mencionada. Tenho certeza de que deve haver uma maneira inteligente de representar a mesma expressão em vez de usar as 3 regexp_replace()
funções fornecidas abaixo. Em essência, preciso me livrar do -
, :
, ' '
. Além disso, podemos nos livrar da parte dos milissegundos também?
select
regexp_replace(regexp_replace(regexp_replace(MAX(rec_insertdttm), '-', ''), ':', ''), ' ', '') as my_dttm
from mydb.mytable
A saída desta consulta é algo como:- '20230817162231.730846'
e eu quero:20230817162231
Obrigado por qualquer ajuda.
Se sua coluna for realmente um
TIMESTAMP
tipo, você pode usar adate_format
função SQL integrada para formatá-la com eficiência:Se o seu tipo for um
STRING
, você podeCAST(rec_insertdttm AS TIMESTAMP)
passar isso para a mesmadate_format()
solução acima.Ou você pode substituir vários caracteres regex de uma só vez usando um intervalo de caracteres regex :
regexp_replace(rec_insertdttm, '[\- :.]', '')
. Mas adate_format()
solução é muito melhor para legibilidade e simplicidade.