Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Coluna Data: Conversão de Nvarchar para Datetime ou Smalld


Fells

Pergunta

Galera, bom diaa...

Fizeram um serviço bem mal feito em Access que sobrou pra mim consertar... seguinte, fizeram um access lá e criaram um campo Data como se fosse char ou sei lá...

Enfim... tive que migrar a base de access pra sql... e ela veio como nvarchar... arrumei o que conseguia dos campos da coluna data afim de converter não é?....

Tinha mutia coisas como 10/28/2009 ou 010909 ou 15.06 ... enfim...

São mtos dadoss... mais desde ontem estou vendo e arrumando para um padrão dd/mm/yyyy... Como sou iniciante no SQL Server, não sei mta coisa...

Creio ter modificado todos os campos já.. ai cliquei com o botão direito desing table e fui alterar a coluna Data de nvarchar para Datetime e ele deu um erro lá e não fez... o mesmo quando fui tentar mudar para smalldatetime...

alguém pode me ajudar nesse "enigma" por gentileza?!?

Obrigado.

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Fells,

Verifique no sql qual o default da data em seu Banco. É bem simples (select getdate()). Os dados na coluna tem q estar neste formato. Se algum não estiver, a conversão não poderá ser realizada.

Dê um order by na coluna e tente identificar alguns dados desformatados....

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Fulvio, firmeza?

Então... o getdate() deu que está assim '20/9/2011 10:45:27'

as Datas da coluna estão tipo assim '20/09/2011'

Só que estão em nvarchar como disse...

Passei um pente fino na coluna e tinha 2 datas que estavam tipo assim 20/092009

Ai corrigi... repassei tudo olhando... e não há mais nada errado... tentei de novo o procedimento de ir lá no design table e alterar e deu o errinho lá:

"'A_CONTROLE DE SOLICITAÇÕES 2009' table

- Warning: Data may be lost converting column 'DATA' from 'nvarchar(10)'.

'A_CONTROLE DE SOLICITAÇÕES 2009' table

- Unable to modify table.

ODBC error: [Microsoft][ODBC SQL Server Driver][sql Server]Arithmetic overflow error converting expression to data type smalldatetime.

[Microsoft][ODBC SQL Server Driver][sql Server]The statement has been terminated."

=/

Link para o comentário
Compartilhar em outros sites

  • 0

Tudo tranquilo...

O problema é que o sql não identifica em qual campo o erro está ocorrendo.

Para tentar resolver isto, você pode criar uma coluna auxiliar do tipo "datetime" na mesma tabela. Vá "updatando" em blocos os dados para a coluna criada. Em certo ponto, dará o erro. Aí você saberá em qual registro ocorreu.

Para updatar em bloco, poderá pegar um campo de referência (pode ser a PK da tabela) e ir fazendo de intervalo em intervalo.

Verifique não somente o formato da data, mas também os anos, meses e dias.

Link para o comentário
Compartilhar em outros sites

  • 0

Ok... é eu criei uma coluna chamada Datax (datetime) e ia dar um jeito de fazer isso... tipo transferir os dados da Data (nvarchar) pra DataX (datetime)...

Mais não sei como fazer...

É com o UPDATE ??? Como faz?? Me mostra como faz por favor!

Editado por Fells
Link para o comentário
Compartilhar em outros sites

  • 0

deu certo mais não deu...

fiz:

UPDATE [A_CONTROLE DE SOLICITAÇÕES 2009]

SET DATAX = DATA

WHERE ([Nº DE AMOSTRA] BETWEEN 1 AND 1)

e ele não copiou o que tem no campo NVARCHAR(DATA) para o campo DATETIME (DATAX)...

porem se inverto ele copia... ou seja DATA = DATAX executa.... já DATAX = DATA da um erro assim:

[microsoft][odbc sql server drive][sql server]arithmetic overflow error converting expression to data type datetime.

tentei mudar o datetime para small e também não deu!... que raiva rsrs...

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Fulvio.. desculpa não responder ontem... é que eu entrei em reunião justamente pra conversar sobre esse assunto e eu também saio as 15hs.... ai não deu pra te dar um retorno.

Cara... não vai não meu...

Aparece uma msg assim:

"[microsoft][ODBC SQL Server Drive][sql Server]The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value."

E com o campo datetime também aparece essa msg...

Que fodástico isso meww... bendita pessoa que foi me criar um campo desses pra data viu!

rsrs...

valeu pela ajuda Fulvio... abraços.

Link para o comentário
Compartilhar em outros sites

  • 0

Cara... você não vai acreditar... eu não te disse que eu havia conferido todas as datas e arrumado???? ... realmente elas estavam no formato dd/mm/aaaa... conferi um milhão de vezes! rsrs

Mas não sei o porque não estavamos conseguindo... sendo que elas estavam certas.

Ai fiz um "import" da mesma Tabela "problemática" [A_CONTROLE DE SOLICITAÇÕES 2009] no SQL e dei o nome de A_S_2009... só pra caso fizesse algo errado ter um backup... na hora de importar eu alterei o campo Data que era Nvarchar pra datetime nessa nova tabela e dei Ok... e importou sem erro....

Agora a coluna Data do meu "Backup" está no formato datetime e importou todos os dados sem erro! =S

Vai entenderr.... que doidera!!! kkkkkk

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...