none
Erro ao gravar data no banco de dados RRS feed

  • Pergunta

  • Quando vou inserir um registro com uma data no SQL Server surge a seguinte mensagem:

    "Conversion failed when converting date and/or time from character string"

    O meu código está assim:

    SqlConnection cnx = new SqlConnection(metodos.conectaBD());
    SqlCommand cmd; 

    int codigo_orc = Convert.ToInt32(tbCodOrcamento.Text);
    int codigo_cl = Convert.ToInt32(tbCodigo.Text);
    double valor = Convert.ToDouble(tbValor.Text);
    DateTime hoje = DateTime.Today;
    DateTime data_venc = hoje.AddDays(30);

    cmd = new SqlCommand("INSERT INTO orcamentos VALUES (" + codigo_orc + "," + codigo_cl + ",'" +
    hoje.ToShortDateString() + "'," + valor + ",'" + data_venc.ToShortDateString() + "')", cnx);

    Já tentei sem aspas simples para as datas, tirei o ToShortDateString() e mesmo assim não consigo resolver o problema. Já setei a linguagem "Brazilian" e nada!

    Quando eu insiro uma data diretamente na instrução SQL grava numa boa, mas a data ainda é gravada no formato dos EUA.

    Alguém poderia me dar uma luz?!


    A persistência e determinação são, por si sós, onipotentes.


    • Editado JuniorCS terça-feira, 17 de junho de 2014 14:22
    terça-feira, 17 de junho de 2014 14:18

Respostas

  • Junior, eu recomendo você sempre gravar as datas no formato "yyyy-MM-dd HH:mm:ss", que ele será aceito pelo SQL independente do idioma que esteja configurado.

    Para fazer isso, é só passar assim:

    hoje.ToString("yyyy-MM-dd")

    Espero que tenha ajudado!

    terça-feira, 17 de junho de 2014 14:28

Todas as Respostas

  • Junior, eu recomendo você sempre gravar as datas no formato "yyyy-MM-dd HH:mm:ss", que ele será aceito pelo SQL independente do idioma que esteja configurado.

    Para fazer isso, é só passar assim:

    hoje.ToString("yyyy-MM-dd")

    Espero que tenha ajudado!

    terça-feira, 17 de junho de 2014 14:28
  • Obrigado Vinicius!

    A persistência e determinação são, por si sós, onipotentes.

    terça-feira, 17 de junho de 2014 14:31
  • Bom dia, 

    você já tentou converter

    CONVERT(nvarchar(30), getdate(), 101)
    algo +- assim
    cmd = new SqlCommand("INSERT INTO orcamentos VALUES (" + codigo_orc + "," + codigo_cl + ",'CONVERT(nvarchar(30), " + hoje + ", 101)'," + valor + ",'CONVERT(nvarchar(30), " + data_venc + ", 101)')", cnx);
    http://msdn.microsoft.com/pt-br/library/ms187928.aspx
    terça-feira, 17 de junho de 2014 14:32