none
hora como int ? RRS feed

  • Pergunta

  • To fazendo algumas pesquisas e estudos com bancos de dados de vários sistemas e me deparei com o banco que o campo hora esta no formato int, salvei 08:00 olho no banco de dados ele me mostra 28800

    alguém sabe como converter pra hora novamente 28800 ?


    Atenciosamente,
    José Henrique Sabino

    segunda-feira, 21 de novembro de 2016 16:49

Respostas

Todas as Respostas

  • Deleted
    segunda-feira, 21 de novembro de 2016 16:53
  • Olá José Sabino,

    Ele grava assim pois ele converte tudo em segundos.

    Então:

    28800 / 60 = 480 minutos
    480 / 60 = 8 horas

    Obviamente fiz dois cálculos apenas para entender o que está acontecendo.

    Aqui tem uma função para retornar a hora formatada "HH:mm:ss". Segue: http://forum.imasters.com.br/topic/533265-converter-minutos-em-horas-e-minutos/


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco


    • Editado André SeccoMVP segunda-feira, 21 de novembro de 2016 16:56
    • Marcado como Resposta Xarp2 segunda-feira, 21 de novembro de 2016 17:21
    segunda-feira, 21 de novembro de 2016 16:56
  • José Sabino,

    Existe no SQL Server um recurso chamado Time Expression FN que nos permite justamente definir expressões de tempo para serem aplicados a cálculo de horas, veja se o exemplo abaixo ajuda:

    Create Table #s(Start Datetime, [end] Datetime)
    
    Insert Into #s
    Select Cast('2010-04-08 12:00:00' As datetime),Cast('2010-04-08 14:10:00' As datetime) Union All
    Select Cast('2010-04-08 13:00:00' As datetime),Cast('2010-04-08 14:00:00' As datetime) Union All
    Select Cast('2010-04-08 15:45:00' As datetime),Cast('2010-04-08 16:00:00' As datetime) Union All
    Select Cast('2010-04-08 15:00:00' As datetime),Cast('2010-04-08 18:00:00' As datetime)
    
    Select Round(Cast(Sum(({fn Hour([end])}-{fn Hour(start)})) As decimal(4,2)) + 
                Cast(Sum({fn Minute([end])} - 
    			{fn Minute( start)}) As decimal(4,2))/60,4) As 'Total Hrs' From #s
    
    
    Select {fn Hour([end])}+{fn Hour(GetDate())},
                {fn Minute([end])},
    			{fn Second([end])}   from #S 


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 22 de novembro de 2016 14:20