none
Pegar uma hora e substituir somente a hora de outro dado, com datas diferentes - campos smalldatetime RRS feed

  • Pergunta

  • Bom dia,

    Eu tenho dois campos smalldatetime..

    um tem uma data inteira com data e horas > 08/16/2011 18:30 = data final

    ah outra eu tenho somente a hora > 18:00 a data fica default 1900.. = horario

    eu queria fazer isso

    SET

     datafinal = CONVERT(VARCHAR(5),horario,114)

     Ai data final ficaria assim 08/16/2011 18:00

    Mais desse jeito não consegui, porque ele pega o default 1900, e queria substituir somente a hora

     

    Desde já obrigado,

    quinta-feira, 18 de agosto de 2011 12:07

Respostas

  • Diego,

    como vc informa so o horario o sql atibui a data de 1900, o que vc precisa fazer é conctenar.. veja exemplo abaixo

    DeCLARE @dHR_EDA SMALLDATETIME
    DECLARE @dDT_IDP_ATE_INI SMALLDATETIME
    SET @dHR_EDA = '08:00'
    SET @dDT_IDP_ATE_INI = '08/16/2011 07:00'
    PRINT @dDT_IDP_ATE_INI
    set @dDT_IDP_ATE_INI= convert(datetime,convert(varchar(10),@dDT_IDP_ATE_INI,101)+' '+CONVERT(VARCHAR(5),@dHR_EDA,114))
    PRINT @dDT_IDP_ATE_INI
    


    Att.
    Marcelo Fernandes


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quinta-feira, 18 de agosto de 2011 13:57

Todas as Respostas

  • Diego,

     

    Poderia postar uma massa de dados (Umas 3 linhas ja é o sulficiente....) para que possamos te ajudar?


    Fabrizzio A. Caputo
    Certificações:
    Oracle OCA 11g
    MCITP SQL Server 2008 Implementation and Maintenance
    MCITP SQL Server 2008 Developer
    Blog Pessoal: www.fabrizziocaputo.wordpress.com
    Blog Empresa: www.tripletech.com.br/blog
    Twitter: @FabrizzioCaputo
    Email: fabrizzio.antoniaci@gmail.com
    quinta-feira, 18 de agosto de 2011 12:34
    Moderador
  • DECLARE

    @dHR_EDA SMALLDATETIME

    DECLARE

    @dDT_IDP_ATE_INI SMALLDATETIME

    SET

    @dHR_EDA = '08:00'

    SET

    @dDT_IDP_ATE_INI = '08/16/2011 07:00'

    PRINT

    @dDT_IDP_ATE_INI

    SET

    @dDT_IDP_ATE_INI = CONVERT(VARCHAR(5),@dHR_EDA,114)

    PRINT

    @dDT_IDP_ATE_INI

    PRINT

    'RESULTADO QUE EU QUERIA É ''Aug 16 2011 8:00AM, MAIS FICA COM A DATA DE 1900'''
    quinta-feira, 18 de agosto de 2011 12:46
  • Diego,

    como vc informa so o horario o sql atibui a data de 1900, o que vc precisa fazer é conctenar.. veja exemplo abaixo

    DeCLARE @dHR_EDA SMALLDATETIME
    DECLARE @dDT_IDP_ATE_INI SMALLDATETIME
    SET @dHR_EDA = '08:00'
    SET @dDT_IDP_ATE_INI = '08/16/2011 07:00'
    PRINT @dDT_IDP_ATE_INI
    set @dDT_IDP_ATE_INI= convert(datetime,convert(varchar(10),@dDT_IDP_ATE_INI,101)+' '+CONVERT(VARCHAR(5),@dHR_EDA,114))
    PRINT @dDT_IDP_ATE_INI
    


    Att.
    Marcelo Fernandes


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quinta-feira, 18 de agosto de 2011 13:57
  • Marcelo,

    Funcionou perfeitamente..

    Obrigado!

    quinta-feira, 18 de agosto de 2011 14:17
  • Diego,

    se possível e achar  justi, marque como resposta a(s) thread(s) que o atendeu, esta ação poderá ajudar outros usuários do forum com a mesma dúvida..

     


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quinta-feira, 18 de agosto de 2011 15:22
  • Gente também estou com problema parecido no 

    smalldatetime 

    Seguinte quando eu vou Cria um Char no Edit da Seguinte erro.

    [Microsoft] [ODBC SQL Server] [SQL Server] A conversão de tipo de data char para tipo de dados smalldatetime resultou em um valor smalldatetime fora do intervalo .

     

    Sera porquê ta com esse Problema ? sera é mesmo ae da Hora? Tenho roda essa Query quê o Marcelo Fernandes da Silva 

     

    Mostro para Noos ?

    DeCLARE @dHR_EDA SMALLDATETIME
    DECLARE @dDT_IDP_ATE_INI SMALLDATETIME
    SET @dHR_EDA = '08:00'
    SET @dDT_IDP_ATE_INI = '08/16/2011 07:00'
    PRINT @dDT_IDP_ATE_INI
    set @dDT_IDP_ATE_INI= convert(datetime,convert(varchar(10),@dDT_IDP_ATE_INI,101)+' '+CONVERT(VARCHAR(5),@dHR_EDA,114))
    PRINT @dDT_IDP_ATE_INI
    

    quinta-feira, 8 de dezembro de 2011 20:17