none
Update em registros DateTime RRS feed

  • Pergunta

  • Bom dia,

     

     

     

    Tenho uma tabela que por um erro meu salvou os registros de data com hora.

     

    ID              DATA
    1               23/01/2009 10:41

    2               24/01/2009 11:13

    3               26/01/2009 13:14

     

     

    Preciso tirar essa hora do registro e deixar assim:

     

    ID              DATA
    1               23/01/2009 00:00

    2               24/01/2009 00:00

    3               26/01/2009 00:00

     

     

     

    Alguem poderia me ajudar?

    Obrigado.

     

     

    Rodrigo Diniz

    segunda-feira, 19 de janeiro de 2009 12:25

Respostas

  • Olá Rodrigo,

     

    Existem algumas formas. Creio que o script abaixo o ajude:

     

    Code Snippet

    declare @t table (id int, data datetime)

    insert into @t values (1,'20090123 10:41')

    insert into @t values (2,'20090124 11:13')

    insert into @t values (3,'20090126 13:14')

     

    update @t set data = convert(char(8),data,112)

     

    select Id, Data FROM @t

     

    [ ]s,

     

    Gustavo Maia Aguiar

    http://gustavomaiaaguiar.spaces.live.com

     

    segunda-feira, 19 de janeiro de 2009 12:33
  • Danilo,

     

    No novo Microsoft SQL Server 2008 foi implementado campos para trabalhar isoladamente com data e hora.

    segunda-feira, 19 de janeiro de 2009 12:49

Todas as Respostas

  • Olá Rodrigo,

     

    Existem algumas formas. Creio que o script abaixo o ajude:

     

    Code Snippet

    declare @t table (id int, data datetime)

    insert into @t values (1,'20090123 10:41')

    insert into @t values (2,'20090124 11:13')

    insert into @t values (3,'20090126 13:14')

     

    update @t set data = convert(char(8),data,112)

     

    select Id, Data FROM @t

     

    [ ]s,

     

    Gustavo Maia Aguiar

    http://gustavomaiaaguiar.spaces.live.com

     

    segunda-feira, 19 de janeiro de 2009 12:33
  • Rodrigo,

    Já tive alguns impasses com datas do SQL Server. De fato, acho que a microsoft poderia colocar um tipo DATE pra facilitar a vida do povo.

    Usei bastante o SQL até a versão 2000. A 2005 fiz muito pouca coisa, portanto a solução que vou passar abaixo pode ser resolvida de maneira mais "inteligente" nesta última versão (espero muito...)!

    Quando foi preciso converter, no próprio banco, data/hora pra data eu criei uma função (POG) para fazer essa conversão.
    A forma mais simples é converter o DATETIME em VARCHAR e capturar o 10 primeiros digitos. Ele sempre mantem dia e mês com 2 digitos. Depois converter para data novamente, usando o CAST.

    Se descobrir alguma outra maneira, ótimo !!
    segunda-feira, 19 de janeiro de 2009 12:35
  •  

    Obrigado, era exatamente isso que eu precisava.

     

    segunda-feira, 19 de janeiro de 2009 12:45
  • Rodrigo,

     

    Estes dados estão armazenados no formato Data e Hora, para realizar esta alteração será necessário realizar a conversão dos dados.

     

    Veja este outro exemplo:

     

    Code Snippet

    Declare @Tabela Table

    (Data DateTime)

     

    Insert Into @Tabela Values (GetDate())

    Insert Into @Tabela Values (GetDate())

    Insert Into @Tabela Values (GetDate())

    Insert Into @Tabela Values (GetDate())

    Insert Into @Tabela Values (GetDate())

     

    Update @Tabela

    Set Data = Convert(VarChar(10),Data,112)

     

    Select * from @Tabela

     

     

     

    segunda-feira, 19 de janeiro de 2009 12:45
  • Danilo,

     

    No novo Microsoft SQL Server 2008 foi implementado campos para trabalhar isoladamente com data e hora.

    segunda-feira, 19 de janeiro de 2009 12:49
  • Blz Junior.

    É bom saber desta informação! Acho que a MS demorou bastante para tomar esta decisão, pois há muito o uso desnecessário do DateTime tem causado várias soluções POG...
    segunda-feira, 19 de janeiro de 2009 12:55
  • Olá Danilo,

     

    Os tipos Date e Time são Ansi Compliance e também não entendo porque demoraram tanto para "entrar" no SQL Server. Essa promessa já estava certa para o SQL Server 2005, mas para não atrasá-lo, ficou mesmo para o 2008. No SQL Server 2008 você possui o tipo de dados DATE e o TIME. Esse último você pode inclusive escolher a precisão até nanosegundos. Há outros tipos interessantes como DateTime2, DateTimeOffSet, etc.

     

    [ ]s,

     

    Gustavo Maia Aguiar

    http://gustavomaiaaguiar.spaces.live.com

     

    segunda-feira, 19 de janeiro de 2009 19:29