none
Formatação de data e datetime C#, SQL Server - AJUDA

    Question

  • Ola,
    bom primeiro de tudo, estou com um problema, eu criei uma coluna DATA como datetime no sql server, e ele pega MM/dd/yyyy,  entao no visual studio eu tenho um dateTimePicker, q pega a data dd/MM/yyyy e TAMBEM a hora.

    gostaria de saber como eu mudo no SQL pro formato portugues ( dd/MM/yyyy ), pois ja mudei no visual studio para o formato ingles e nao deu certo.

    e tambem queria saber como eu faço para pegar SÓ a DATA no datetimePicker.


    Obrigado!!!
    Friday, June 26, 2009 12:45 PM

Answers

  • Olá Colega

    Caso não tenha resolvido este problema, vai ai:

    Vá no Sql Server Enterprise Manager
    click em Security, depois click em Logins
    vai aparecer o usuário do seu banco de dados
    click sobre ele com o botão direito do mouse e vá em propriedades
    na aba General, escolha o banco de dados e a linguagem Brazilian.
    Re-inicie o Sql Server e pronto.

    Com os procedimentos acima vc muda a data de mm/dd/yyyy para dd/mm/yyyy resolvendo seu problema de data.

    espero ter ajudado.
    Abinálio
    Wednesday, July 22, 2009 3:20 PM
  • Luciano,

    Uma configuração que pode ser feita é sobre o usuário usado para conexão com o SQL Server, nas propriedades dele existe a propriedade "Language". Mude para Português que deve resolver esse seu problema.


    Abraço
    Classifiquem as respostas. O Fórum agradece!!
    Wednesday, July 22, 2009 4:29 PM

All replies

  • consegui pegar só a data no datetimepicker....


    agora meu maior problema é que qdo eu escolho um dia MAIOR q 12 ele da erro, ou seja no primeiro campo do SQL ele esta achando q é o mes, entao ele nao deixa ser maior q 12....

    como eu resolvo isso ?
    Friday, June 26, 2009 12:52 PM
  • Ola Luciano,

    Vc pode usar o convert para aceitar esta data.

    declare @data varchar(10)
    set @data = '13/06/2009'
    
    select convert(datetime,@data ,103)

    att.

    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    Friday, June 26, 2009 1:27 PM
    Moderator
  • Bom Dia,

    Não use nenhum formato que não o YYYYMMDD no SQL Server. Se você usar esse formato nunca terá problemas com configurações de data.

    Para qualquer outro formato, você pode mudar no Default Language do usuário ou com a instrução SET DATEFORMAT. Nenhuma das duas é uma solução ideal. O Default Language é apenas um por usuário e se o usuário precisar de configurações diferentes você terá problemas. O SET DATEFORMAT resolve mas se for colocado dentro de uma SP levará a recompilação.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Como importar e exportar imagens entre o SQL Server e o File System ? – Parte II
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!612.entry
    Classifique as respostas. O seu feedback é imprescindível
    Friday, June 26, 2009 1:56 PM
    Moderator
  • agora verifiquei atraves do select * from table que na minha coluna DATA os dados estao entrando assim : YYYY/dd/MM 00:00:00

    e nao encontrei NENHUM jeito de moficar para esse formato quando eu insiro os dados pelo visual studio......

    no visual studio eu uso essa syntaxe:



    DateTime novaData = dATADateTimePicker.Value.Date;

    SqlCommand novo = new SqlCommand("INSERT INTO Nomes(DATA, ADALBERTO) VALUES(convert(datetime,'" + novaData + "',111),'" + richTextBox1.Text + "')", novaCon);


    ja tentei varios formatos, 120,102,101

    TODOS eles, quando eu digito um dia MAIOR que 12, da erro....


    Friday, June 26, 2009 2:01 PM
  • agora verifiquei atraves do select * from table que na minha coluna DATA os dados estao entrando assim : YYYY/dd/MM 00:00:00

    e nao encontrei NENHUM jeito de moficar para esse formato quando eu insiro os dados pelo visual studio......

    no visual studio eu uso essa syntaxe:



    DateTime novaData = dATADateTimePicker.Value.Date;

    SqlCommand novo = new SqlCommand("INSERT INTO Nomes(DATA, ADALBERTO) VALUES(convert(datetime,'" + novaData + "',111),'" + richTextBox1.Text + "')", novaCon);


    ja tentei varios formatos, 120,102,101

    TODOS eles, quando eu digito um dia MAIOR que 12, da erro....


    Friday, June 26, 2009 2:08 PM
  • entao, no sql server quando eu mando um SELECTO * FROM Nomes, na coluna DATA, aparece assim YYYY/DD/MM 00:00:00

    e nao tem nenhum formato 120,111 q converta pra esse modo quando eu insiro pelo visual studio
    minha sintaxe :


    SqlCommand novo = new SqlCommand("INSERT INTO Nomes(DATA, ADALBERTO) VALUES('" + dATADateTimePicker.Value.Date + "','" + richTextBox1.Text + "')", novaCon);


    ja tentei converter para 102,120, e nao da certo, SEMPRE q eu coloco um dia maior que 12, ele da esse erro :

    The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.


    Friday, June 26, 2009 2:16 PM
  • Olá Colega

    Caso não tenha resolvido este problema, vai ai:

    Vá no Sql Server Enterprise Manager
    click em Security, depois click em Logins
    vai aparecer o usuário do seu banco de dados
    click sobre ele com o botão direito do mouse e vá em propriedades
    na aba General, escolha o banco de dados e a linguagem Brazilian.
    Re-inicie o Sql Server e pronto.

    espero ter ajudado.
    Abinálio
    Friday, July 17, 2009 3:34 PM
  • Abnálio,

    Vc efetuou os teste? deu certo?

    pois a language brazilian, tem a data no formato dmy  e ele esta passando YDM (que não conheco nenhuma lingua que use ete formato)
    vc não consegue fazer esta formatação na sua aplicação?

    Att.
    Marcelo Fernandes

     


    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    Friday, July 17, 2009 4:24 PM
    Moderator
  • vou tentar aqui fazer o que o abnalio disse,

    pois é Marcelo, eu tbm não conheço nenhum formato de data ydm, mas ele esta recebendo assim, por isso estranhei.


    []'s
    Friday, July 17, 2009 4:31 PM
  • Boa Tarde,

    Os idiomas chinês e japonês utilizam o formato YYYY MM DD. Alterações na configuração do usuário não necessitam de reiniciar o SQL Server.
    Cabe lembrar que se sua string passar a data no formato YYYYMMDD (sem hífens) você não terá nenhum tipo de problema em relação as essas configurações.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.spaces.live.com

    Pivoteando, Despivoteando, Transpondo, Invertendo Colunas e Linhas no SQL Server
    http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!629.entry


    Classifique as respostas. O seu feedback é imprescindível
    Friday, July 17, 2009 5:22 PM
    Moderator
  • Luciano,

    Você conseguiu solucionar o seu problema?
    Caso afirmativo poste a solução para que outras pessoas se beneficiem.

    Att,
    Fernanda


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.
    Monday, July 20, 2009 2:42 PM
    Moderator
  • Olá Colega

    Caso não tenha resolvido este problema, vai ai:

    Vá no Sql Server Enterprise Manager
    click em Security, depois click em Logins
    vai aparecer o usuário do seu banco de dados
    click sobre ele com o botão direito do mouse e vá em propriedades
    na aba General, escolha o banco de dados e a linguagem Brazilian.
    Re-inicie o Sql Server e pronto.

    Com os procedimentos acima vc muda a data de mm/dd/yyyy para dd/mm/yyyy resolvendo seu problema de data.

    espero ter ajudado.
    Abinálio
    Wednesday, July 22, 2009 3:20 PM
  • Luciano,

    Uma configuração que pode ser feita é sobre o usuário usado para conexão com o SQL Server, nas propriedades dele existe a propriedade "Language". Mude para Português que deve resolver esse seu problema.


    Abraço
    Classifiquem as respostas. O Fórum agradece!!
    Wednesday, July 22, 2009 4:29 PM