Gostaria de importar um arquivo Excel no qual os horários são formatados como "00:00" (minutos:segundos). O campo correspondente no banco de dados é designado como um inteiro.
Qual função posso usar para inserir o valor e convertê-lo para a representação inteira correspondente? Por exemplo: "02:39" deve retornar "159".
Tentei pesquisar no Google e também olhar várias fontes como: https://www.postgresql.org/docs/current/functions-datetime.html . Não consegui encontrar a função que precisava
Não há uma função nativa para a conversão que você está procurando. A solução, portanto, é uma função definida pelo usuário. A função precisa pegar sua string formatada, analisá-la em suas partes distintas e, finalmente, calcular e retornar o número de segundos. Felizmente, essa é uma tarefa fácil:
O
time_miss
cte analisa a string de entrada em seus minuetos (mi
) e segundos ( ) desejados usando as funções dess
substring e position string ; o select principal então calcula o total de segundos. Como uma função SQL, os resultados são retornados. (veja demo )Isso é possível com alguma aritmética de data:
Extrair 'epoch' de um valor de tempo ou intervalo fornece o número de segundos no intervalo. No seu caso (mm:ss), você precisa prefixar '00:' ou o literal é lido como hh:mm. Os campos hh, mm e ss são limitados a 0-23 e 0-59 respectivamente (para intervalos, o campo de hora pode ser maior que 23).
Os recursos dependem da versão do Postgresql; usei a 16. Aqui está um exemplo um pouco mais elaborado.