Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jonas5500

Converter número decimal em horas

Recommended Posts

Bom dia,

 

Estou precisando criar relatório, onde os dados relacionado a tempo são exibido em número decimal. Para que o relatório fique legível para o usuário e para que ele não tenha que realizar esta conversão na mão, preciso que a consulta já exiba esta informação em horas.

 

Como realizar esta conversão em horas no MySQL?

 

Até encontrei a função SEC_TO_TIME() mas o valor retornado está incorreto. Caso seja esta a função correta, tem algo mais a ser feito?

 

Obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei a solução e o erro que estava cometendo.

A função SEC_TO_TIME realiza esta conversão. Abaixo eu estou somando o tempo gasto de um cliente. O valor retornado é em número decimal com muitas casas. Então, eu arredondo para no máximo duas casas decimais usando a função ROUND. E por fim uso o SEC_TO_TIME para converter para horas.

SEC_TO_TIME((ROUND(SUM(tempo_gasto.hours),2))*60*60)

Achei que não estava dando certo, porque usei também a função TIME_FORMAT para converter o resultado da função SEC_TO_TIME, o que dava erro.


Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por maiconparra
      Olá a todos me deparei com um pequeno problema irritante. Eu estou usando um código PHP parecido com este: 
       
      $image = imagecreatefromjpeg($imagem); imagewebp($image, $caminho_do_diretório/exemplo.webp, 100); Para fazer a conversão de JPEG ou PNG para webp.
      Porém algumas imagens, não sei se é dimensionamento ou outro fator. Por vezes fica em branco depois da conversão.
      Eu já coloque em um if porque o retorno da função imagewebp é um boolean, fiz tratamento de exeção e não consigo capturar qual é o erro.
      Se alguém já tiver passado por algo parecido e puder me dar uma luz. Ficaria muito grato.
    • Por biakelly
      Oie, olha eu aqui novamente , essa questão é para quem esta acostumado com bugs que inicialmente não fazem sentido 
       
      Meu código funciona bem o objetivo dele é fazer algumas confirmações e mostrar o preço em real onde inicialmente tenho:
      <?php session_start(); include('../../sqlServices/db.php'); $nomemoeda = $_GET['nomemoeda']; $valormoeda = $_GET['valormoeda']; $brl = $_GET['brl']; $usdconvert = $usdimport; $check = "SELECT `limite`,`percentual` FROM `biaContabilidade`.`moedatbl` WHERE `nomemoeda`='$nomemoeda' AND `isactive`=1"; $checkr = mysqli_query($con, $check); $rowct = mysqli_fetch_array($checkr); $limit = $rowct['limite']; if ($valormoeda < $limit) { // echo "<script> alert ( 'limite abaixo'); </script>"; echo "true"; } else { $percentual = $rowct['percentual']; $percentual = $percentual / 100; $percentual = $brl * $percentual; $appliedpercentualBRLValue = $brl + $percentual; $brl = number_format($brl * 100); // echo "Pay R$ " .$brl."/-"; echo $brl; }  
      Não suficiente estou tentando mostrar o preço que é exibido neste código em dólar uma vez que tenho um crontab pegando a taxa e a atualizando a cada 2 horas (eu sei é muito, mas é uma condição interna), desta forma complementei o código assim:
       
      <?php session_start(); include('../../sqlServices/db.php'); $usdimport = file_get_contents("../Textvalue/valuebrl.txt"); $nomemoeda = $_GET['nomemoeda']; $valormoeda = $_GET['valormoeda']; $brl = $_GET['brl']; $usdconvert = $usdimport; $check = "SELECT `limite`,`percentual` FROM `biaContabilidade`.`moedatbl` WHERE `nomemoeda`='$nomemoeda' AND `isactive`=1"; $checkr = mysqli_query($con, $check); $rowct = mysqli_fetch_array($checkr); $limit = $rowct['limite']; if ($valormoeda < $limit) { // echo "<script> alert ( 'limite abaixo'); </script>"; echo "true"; } else { $percentual = $rowct['percentual']; $percentual = $percentual / 100; $percentual = $brl * $percentual; $appliedpercentualBRLValue = $brl + $percentual; $brl = number_format($brl * 100 / $usdconvert); // echo "Pay R$ " .$brl."/-"; echo $brl; } como pode ver adicionei o caminho da minha cotação:
      $usdimport = file_get_contents("../Textvalue/valuebrl.txt");
       
      e mudei o final do código:
      $brl = number_format($brl * 100 / $usdconvert);
       
      Bem, localmente ele funciona direitinho, faz a conversão normal e exibe um poupup com o carrinho da stripe e o preço em dólar do jeito que preciso, mas online não funciona. Curiosamente o caminho esta correto.
       
      Não consigo entender, será que estou usando alguma rotina aqui erroneamente?
    • Por manolegal
      Olá amigos(as) do Fórum.
      Tenho um número inteiro no PHP e preciso inseri-lo no Postgresql com 02 casas decimais.
      Defini o campo no Postgresql do tipo numeric(14,2)
      O valor está assim no PHP:
      2961966 Preciso gravar no BD da seguinte maneira:
      29619.66 Porém está gravando da seguinte forma:
      2961966.00 Tentei utilizando number_format, porém não consegui:
      $numero_bd = number_format($numero, '.', ''); $numero_bd = number_format($numero,2,"."); $numero_bd = number_format($numero,2,","numerovalor_ref_15,2,",","."); Caso alguém possa me ajudar, desde já agradeço.
    • Por manolegal
      Bom dia
      Preciso adequar um campo para receber valor com máscara com 03 casas decimais.
      Com 02 casas está funcionando corretamente:
      $('#meu_campo').maskMoney( {symbol: "R$ ", decimal: ",", thousands: "."} ); Tentei:
      $('#meu_campo').maskMoney( {symbol: "R$ ", decimal: ",", thousands: ".", precision: "3"} ); Porém não funciona e nem permite que eu digite algum valor no campo.
      Preciso que o campo aceite valores no formato: ###,### ou ##,###.
    • Por Hyroshima
      bom-dia pessoal, não tenho conhecimento para fazer essa conversão ou deixar compatível, se alguém puder por favor fazer isso pra mim ficarei agradecido de coração.
       
      meu problema é o código abaixo que está usando biblioteca do windows WINSOCK2.H para fazer um ping no ip fornecido por um comando ping("ip")  e retornar uma msg igual ao ping do windows, gostaria se possível que o mesmo fosse utilizado em linux (centos) mantendo a mesma funcionalidade ?
       
      ping.c
      #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #include <WINSOCK2.H> #define DEF_BUF_SIZE 1024 #define IP_HEADER_SIZE 20 #define ICMP_HEADER_SIZE 12 typedef struct _ICMP_HEADER { BYTE bType; BYTE bCode; USHORT nCheckSum; USHORT nId; USHORT nSequence; UINT nTimeStamp; }ICMP_HEADER, *PICMP_HEADER; USHORT GetCheckSum(LPBYTE lpBuff, DWORD dwSize) { DWORD dwCheckSum = 0; USHORT* lpWord = (USHORT*)lpBuff; while(dwSize > 1) { dwCheckSum += *lpWord++; dwSize -= 2; } if(dwSize ==1) dwCheckSum += *((LPBYTE)lpBuff); dwCheckSum = (dwCheckSum >> 16) + (dwCheckSum & 0XFFFF); return (USHORT)(~dwCheckSum); } BOOL Ping(char* lpDestIP, int *nRet_, int *nTime_) { int nTime = 0; int ret = 0; char ICMPPack[ICMP_HEADER_SIZE] = {0}; char szRcvBuff[DEF_BUF_SIZE] = {0}; int i = 0; int nRet = 0; int nLen = 0; int nError = 0; SOCKET s; PICMP_HEADER pRcvHeader; SOCKADDR_IN SourceSockAddr; SOCKADDR_IN DestSockAddr; PICMP_HEADER pICMPHeader; DestSockAddr.sin_family = AF_INET; DestSockAddr.sin_addr.S_un.S_addr = inet_addr(lpDestIP); DestSockAddr.sin_port = htons(0); pICMPHeader = (PICMP_HEADER)ICMPPack; pICMPHeader->bType = 8; pICMPHeader->bCode = 0; pICMPHeader->nId = (USHORT)GetCurrentProcessId(); pICMPHeader->nCheckSum = 0; pICMPHeader->nTimeStamp = 0; s = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP); nTime = 1000; ret = setsockopt(s, SOL_SOCKET, SO_RCVTIMEO, (char*)&nTime, sizeof(nTime)); for(i=0; i <1; i++) { pICMPHeader->nCheckSum = 0; pICMPHeader->nSequence = i; pICMPHeader->nTimeStamp = GetTickCount(); pICMPHeader->nCheckSum = GetCheckSum((LPBYTE)(ICMPPack), ICMP_HEADER_SIZE); nRet = sendto(s, ICMPPack, ICMP_HEADER_SIZE, 0, (SOCKADDR*)&DestSockAddr, sizeof(DestSockAddr)); if(nRet == SOCKET_ERROR) { return FALSE; } nLen = sizeof(SOCKADDR_IN); if(nRet == SOCKET_ERROR) { return FALSE; } nRet = recvfrom(s, szRcvBuff,DEF_BUF_SIZE,0,(SOCKADDR*)&SourceSockAddr,&nLen); if(nRet == SOCKET_ERROR) { return FALSE; } pRcvHeader = (PICMP_HEADER)(szRcvBuff + IP_HEADER_SIZE); nTime = GetTickCount() - pRcvHeader->nTimeStamp; //printf("Return Message: %s bytes=%d time=%dms\n", inet_ntoa(SourceSockAddr.sin_addr), nRet, nTime); *nRet_ = nRet; *nTime_ = nTime; } return TRUE; }  
      a outra estrutura:
      #include "ping.c" BUILDIN_FUNC(ping) { // const char *name; char _cmd[500]; int nRet=0, nTime=0; // // name = script_getstr(st,2); Ping((char *)name, &nRet, &nTime); if( nRet <= 0 || nTime < 0 ) sprintf(_cmd,"Return Message: %s fail to connect", (char *)name); else sprintf(_cmd,"Return Message: %s bytes=%d time=%dms\n", (char *)name, nRet, nTime); // script_pushstrcopy(st, _cmd); return 0; } BUILDIN_DEF(ping,"s")  
      Desde já muito obrigado, fiz algumas buscas mas não achei nada que possa me ajudar a fazer essa conversão ou até mesmo redigir o código para funcionar em linux.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.