none
Conversão de data RRS feed

  • Pergunta

  •  

    Bom dia a todos,
     
    Tenho um aplicativo web (ASPX e C#) no qual quero fazer uma inclusão em minha base de dados e no meu caso a data não é altera apenas apresentada em formato de label para o suário.
     
    Quando exibida ara o usuário está no formato correto pt-br (dd/MM/yyyy) , porém na hora de incluir essa data na minha tabela, a data está sendo incluída no formato "americano" (MM/dd/yyyy) .
     
    Como faço para que a inclusão no banco tmb seja feita no formato pt-br.
     
    Abaixo meu código.
     

    Code Block

    SqlConnection conn = new SqlConnection("Data Source=INTRANETVARE JO; Initial Catalog=Resolve; Persist Security Info=True; User ID=sa; PWD=gecarrj");

    SqlCommand cmd = new SqlCommand("INSERT INTO transacoes (GerenteID , AssuntoID , Tipo , Data) VALUES ('" + this.ddlGerente. SelectedValue + "' , '" + this.ddlAssunto. SelectedValue + "' , '" + this.rblTipo.SelectedVa lue + "' , '" + this.lblData.Text + "')", conn);

    conn.Open();

    cmd.ExecuteNonQuery ();

    conn.Close() ;

     

     

    Minha label está na page_load assim:

     

    Code Block
    lblData.Text = DateTime.Now.ToString("dd/MM/yyyy");

     

     

     

    Agradeço desde já a juda de todos.

     

    Att

    WallCarlos

    quinta-feira, 13 de dezembro de 2007 13:03

Respostas

  •  

    Daniel,

     

    boa tarde, não dei o GetDate(), pois queria que fosse exibido em um label para o usuário e aproveitei dessa forma.

     

    Agradeço mais uma vez a ajuda.....consegui resolver e a solução foi a seguinte:

     

    Para que o sql server reconheça a data no formato dd/MM/yyyy adicionei no inicio da string sql “Set DateFormat DMY;”

    Ficando assim:

     

    Code Block

    SqlCommand cmd = new SqlCommand("Set DateFormat DMY;INSERT INTO transacoes (GerenteID , AssuntoID , Tipo , Data) VALUES ('" + this.ddlGerente. SelectedValue + "' , '" + this.ddlAssunto. SelectedValue + "' , '" + this.rblTipo.SelectedVa lue + "' , '" + this.lblData.Text + "')", conn);

     

     

    Abs e mais uma vez vlw a ajuda.

     

    Att

    quinta-feira, 13 de dezembro de 2007 14:26

Todas as Respostas

  • Por que voce não da um getdate() na tua query direto?

     

    E voce ja tentou recuperar a data do banco? Pois no Sql o formto de data é um mas na hora de voce mostrar na aplicação vc pode formatar igual vc fez no label.

    quinta-feira, 13 de dezembro de 2007 13:34
  •  

    Daniel,

     

    boa tarde, não dei o GetDate(), pois queria que fosse exibido em um label para o usuário e aproveitei dessa forma.

     

    Agradeço mais uma vez a ajuda.....consegui resolver e a solução foi a seguinte:

     

    Para que o sql server reconheça a data no formato dd/MM/yyyy adicionei no inicio da string sql “Set DateFormat DMY;”

    Ficando assim:

     

    Code Block

    SqlCommand cmd = new SqlCommand("Set DateFormat DMY;INSERT INTO transacoes (GerenteID , AssuntoID , Tipo , Data) VALUES ('" + this.ddlGerente. SelectedValue + "' , '" + this.ddlAssunto. SelectedValue + "' , '" + this.rblTipo.SelectedVa lue + "' , '" + this.lblData.Text + "')", conn);

     

     

    Abs e mais uma vez vlw a ajuda.

     

    Att

    quinta-feira, 13 de dezembro de 2007 14:26
  • Aproveitando o post, gostaria de saber como formato data no meu gridview

     

    fiz um insert usando C#, e fiz uma consulta e aparece embaixo no GridView, porem no campo data retorna dd/mm/aaaa 00:00:00

     

    como faço para ele ignorar esse formato usando horario, quero apenas o dia mesmo...

    quarta-feira, 27 de fevereiro de 2008 15:01
  • Considero que você queira apenas mostra a data ignorando o horário.
    Basta definir a propriedade DataFormatString do seu controle GrivView com o valor
    Code Snippet

    "{0:dd/MM/yyyy}"

    , deve ficar assim no código HTML do Grid:


    Code Snippet

    DataFormatString="{0:dd/MM/yyyy}"




    []'s
    quarta-feira, 27 de fevereiro de 2008 16:07
  •  Arley Marciel wrote:
    Considero que você queira apenas mostra a data ignorando o horário.
    Basta definir a propriedade DataFormatString do seu controle GrivView com o valor
    Code Snippet

    "{0:dd/MM/yyyy}"

    , deve ficar assim no código HTML do Grid:


    Code Snippet

    DataFormatString="{0:dd/MM/yyyy}"



    []'s

     

    Obrigado, resolveu "em parte", quando abre o GridView ele fica nesse formato quu eu defini (sem horas), porem quando eu clico no botao editar do gridview, os campos se expandem para q eu possa fazer a ediçao, e as horas aparecem novaemente... tem como corrigir isso?

    quarta-feira, 27 de fevereiro de 2008 16:48
  • Voce pode converter em template essa coluna e no itemtemplate vai achar o controle textbox ai vc faz a mesma coisa!

    quarta-feira, 27 de fevereiro de 2008 17:33
  • Qual o tipo da coluna?

    BoundColumn ou Template Column
    quarta-feira, 27 de fevereiro de 2008 17:33
  • Cara, sempre usei pra testes 01/01/2000 e nunca tinha me atentado que estava sendo salvo mm/dd/yyyy

    quando tento salvar 15/02/2000 da erro pois ele considera mm/dd/yyyy , estou usando DAAB para acesso aos dados e fazendo tudo por Stored Procedure

     ALTER PROCEDURE wpInsereFuncionario
    (   @Matricula             char(9),    @Nome                varchar(50),
        @Status                char(1),     @Data                datetime )
    AS
        Set DateFormat DMY;INSERT INTO Gestor (
                Matricula,     Nome,
                Data,           Status            )
        VALUES
            (     @Matricula,    @Nome,
                @Data,          'S'      )

    Esse é meu codigo na pagina

    SqlHelper.ExecuteNonQuery(
     ConfigurationManager.ConnectionStrings["ABCDE"].ConnectionString,
     //CommandType.Text,("Set DateFormat DMY;INSERT INTO Funcionario (Nome , Matricula ,Data) VALUES ('" + this.txtMatricula.Text + "' , '" + this.txtNome.Text + "' , '" + this.txtData.Text + "')"));
    CommandType.StoredProcedure,
     "wpInsereFuncionario",
      new SqlParameter("@Nome", txtNome.Text),
      new SqlParameter("@Matricula", txtMatricula.Text),
       new SqlParameter("@Data", (txtData.Text),

    Como podem notar, ha uma linha de codigo comentada nesse trecho de codigo, que esta funcionando normalmente, esta mandando para o banco no formato dd/mm/yyyy

    O problema ocorre quando estou usando a Stored Procedure para fazer a inclusao, da erro no Visual Studio! tipo aquela parte que foi usada pelo WallCarlos nos post acima,  "Set DateFormat DMY;" antes do insert da erro no visual studio!! alguem pode dar um help????
    terça-feira, 18 de março de 2008 02:41
  • Qual o erro?

    terça-feira, 18 de março de 2008 13:55
  •  Daniel Dac wrote:

    Qual o erro?



    Puts! detalhei quase tudo e esqueci esse detalhe... o da um erro no visual studio assim:

    Error converting data type nvarchar to datetime.


    via CommandType.text = 100%

    CommandType.Text,("Set DateFormat DMY;INSERT INTO Funcionario (Nome , Matricula ,Data) VALUES ('" + this.txtMatricula.Text + "' , '" + this.txtNome.Text + "' , '" + this.txtData.Text + "')"));

    via CommandType.StoredProcedure da esse erro acima

    CommandType.StoredProcedure,
     "wpInsereFuncionario",
      new SqlParameter("@Nome", txtNome.Text),
      new SqlParameter("@Matricula", txtMatricula.Text),
       new SqlParameter("@Data", (txtData.Text),  <=== a instruçao
    Set DateFormat DMY, ja esta na SP, sera que devo adapata-la ao passar o parametro data novamente?

    terça-feira, 18 de março de 2008 18:57
  • O problema dessa linha provavelmente esta no valor em que vc esta passando como parametro que o Sql esta interpretando como uma string(nvarchar) e não Datetime como deve ser o campo q vc esta jogando o valor.

    terça-feira, 18 de março de 2008 19:07
  •  Daniel Dac wrote:

    O problema dessa linha provavelmente esta no valor em que vc esta passando como parametro que o Sql esta interpretando como uma string(nvarchar) e não Datetime como deve ser o campo q vc esta jogando o valor.



    bem... devia ser isso mesmo, mas consegui resolver, talvez pelo uso das barras dd/mm/yyyy  ele tivesse considerando string na hora de mandar para o banco, sei la!

    CommandType.StoredProcedure,
     "wpInsereFuncionario",
      new SqlParameter("@Nome", txtNome.Text),
      new SqlParameter("@Matricula", txtMatricula.Text),
       new SqlParameter("@Data", Convert.ToDateTime(txtData.Text) <=== isso corrigiu meu problema, mandou pro banco a data e ja corrigiu outro problema que estava batendo a cabeça faz tempo, ele tava salvando como MM/dd/yyyy e agora esta salvando beleza no formato dd/MM/yyyy. Vlw ai pela ajuda! =) Ponto


    quarta-feira, 19 de março de 2008 01:43