none
Como verificar se o valor de um campo texto é uma data válida RRS feed

  • Pergunta

  • Olá, senhores. Boa tarde.

    Este comando dá vários erros de lógica na conversão:

    UPDATE  tblEstoqueVolume
       set datProducao = case 
                         when isdate(datProducao) = 1 then convert(varchar(30), convert(datetime, datProducao, 102))
                         else Null
                         end

    Já experimentei colocar o argumento 101, 102, 103 ... Nunca ele considera corretamente as datas no formato brasileiro e inverte outras entre mês e dia.

    Como fazer a conversão correta entre o texto varchar() e as datas que estou importando de um arquivo csv?


    Bom dia, bom trabalho.

    • Tipo Alterado Gustavo Maia Aguiar segunda-feira, 27 de fevereiro de 2012 21:45 É uma dúvida e não uma discussão
    segunda-feira, 27 de fevereiro de 2012 21:37

Respostas

  • Olá, Marcelo. Agradeço a atenção.

    O problema está no formato: 31/08/2012 não é para o meu banco de dados um formato válido.

    Então, resolvi incluindo um comando de configuração antes:

    SET DATEFORMAT dmy; /* definindo o formato da data */
    UPDATE  tblEstoqueVolume
       set datProducao = case 
                         when isdate(datProducao) = 1 then convert(varchar(10), datProducao, 103)
                         else Null
                         end;

    ... Espero que ajude outros colegas.

    Obrigado.


    Bom dia, bom trabalho.


    terça-feira, 28 de fevereiro de 2012 14:13

Todas as Respostas

  • Ricardo qual o datatyoe do campo datProducao?

    se for datetie e você deseja exibir no formato DD/MM/YYYY teste assim:

    UPDATE  tblEstoqueVolume
       set datProducao = case 
                         when isdate(datProducao) = 1 then convert(varchar(10), datProducao, 103)
                         else Null
                         end


    Att.
    Marcelo Fernandes

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

    segunda-feira, 27 de fevereiro de 2012 22:22
    Moderador
  • Olá, Marcelo. Agradeço a atenção.

    O problema está no formato: 31/08/2012 não é para o meu banco de dados um formato válido.

    Então, resolvi incluindo um comando de configuração antes:

    SET DATEFORMAT dmy; /* definindo o formato da data */
    UPDATE  tblEstoqueVolume
       set datProducao = case 
                         when isdate(datProducao) = 1 then convert(varchar(10), datProducao, 103)
                         else Null
                         end;

    ... Espero que ajude outros colegas.

    Obrigado.


    Bom dia, bom trabalho.


    terça-feira, 28 de fevereiro de 2012 14:13