Jump to content
Fórum Script Brasil
  • 0

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


Fells

Question

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 to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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!

Edited by Fells
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...