none
Tipo DateTime em formato Inglês RRS feed

  • Pergunta

  • Fala galera. 

    Estou trabalhando com MVC 5 e EF 6. 

    Tenho um campo de Data e outro de Hora, sim são separados, porem, criei os dois como DateTime. 

    Tranquilo o tenso é que no banco a data está sendo gravada no formado Inglês (yyyy-mm-dd) e eu ja tentei de tudo mas não consigo gravar ela no formado dd/MM/yyyy. 

    Verifiquei e meu banco a Defaut Language está definido como Brazilian, Defaut Full-Text Language como 1046 (Portugues -BR) e eu passo o campo mascarado para o banco. 

    O que está faltando?

     Banco.CadastroLeiloes objLeilao = new Banco.CadastroLeiloes
     {
            NomeLeilao = model.leilaoNome,
            DataLeilao = Convert.ToDateTime(model.leilaoData.Date.ToString("dd/MM/yyyy")),
            HoraLeilao = Convert.ToDateTime(model.leilaoHora.ToShortTimeString())
     };
                 
     db.CadastroLeilao.Add(objLeilao);
     db.SaveChanges();

    quarta-feira, 8 de outubro de 2014 17:03

Respostas

  • Fernando,

    O SQL Server por padrão sempre armazena as colunas com datatype "datetime" no formato americano ("yyyy-MM-DD").

    O ideal é manter a estrutura da sua instância SQL funcionando desta forma e você apenas formatar a exibição dos dados quando necessário.

    Segue um exemplo de CONVERT para exibir a data no formato brasileiro ("DD/MM/yyyy").

    SELECT CONVERT(varchar, GETDATE(), 103)
    GO

    Para maiores informações veja:

    http://msdn.microsoft.com/pt-br/library/ms187928.aspx

    http://msdn.microsoft.com/pt-br/library/ms186724.aspx

    http://technet.microsoft.com/pt-br/library/ms180878(v=sql.105).aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quarta-feira, 8 de outubro de 2014 17:34
    Moderador
  • Nesse artigo ensina como alterar o formato da data que o SQL salva

    Se a sugestão resolver o problema, favor marcar como Resposta.

    Lucas foi exatamente isso que eu já havia feito, mas sem sucesso algum nada mudou. 

    Mesmo assim não funciona.

    • Marcado como Resposta Fernando Mamprin quinta-feira, 9 de outubro de 2014 14:52
    quarta-feira, 8 de outubro de 2014 17:45
  • Fernando,

    Se o seu Windows esta em Português o SQL Server também, as configurações regionais definidas em Português inclusive formatação de Data e Hora.

    Além disso a conta de usuário esta definida também com a Linguagem em Português, vejo que o grande vilão da história é o próprio EntityFramework!!!

    Já tive problemas similares com este, em alguns projetos que os desenvolvedores utilizam NHibernate!!!

    Em outros casos trabalhando com objetos ODBC o problema estava justamente na configuração do Provider de conexão.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    • Marcado como Resposta Fernando Mamprin quinta-feira, 9 de outubro de 2014 16:30
    quinta-feira, 9 de outubro de 2014 14:54

Todas as Respostas

  • Fernando,

    O SQL Server por padrão sempre armazena as colunas com datatype "datetime" no formato americano ("yyyy-MM-DD").

    O ideal é manter a estrutura da sua instância SQL funcionando desta forma e você apenas formatar a exibição dos dados quando necessário.

    Segue um exemplo de CONVERT para exibir a data no formato brasileiro ("DD/MM/yyyy").

    SELECT CONVERT(varchar, GETDATE(), 103)
    GO

    Para maiores informações veja:

    http://msdn.microsoft.com/pt-br/library/ms187928.aspx

    http://msdn.microsoft.com/pt-br/library/ms186724.aspx

    http://technet.microsoft.com/pt-br/library/ms180878(v=sql.105).aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    quarta-feira, 8 de outubro de 2014 17:34
    Moderador
  • Nesse artigo ensina como alterar o formato da data que o SQL salva

    Se a sugestão resolver o problema, favor marcar como Resposta.

    quarta-feira, 8 de outubro de 2014 17:35
  • Fernando,

    O SQL Server por padrão sempre armazena as colunas com datatype "datetime" no formato americano ("yyyy-MM-DD").

    O ideal é manter a estrutura da sua instância SQL funcionando desta forma e você apenas formatar a exibição dos dados quando necessário.

    Segue um exemplo de CONVERT para exibir a data no formato brasileiro ("DD/MM/yyyy").

    SELECT CONVERT(varchar, GETDATE(), 103)
    GO

    Para maiores informações veja:

    http://msdn.microsoft.com/pt-br/library/ms187928.aspx

    http://msdn.microsoft.com/pt-br/library/ms186724.aspx

    http://technet.microsoft.com/pt-br/library/ms180878(v=sql.105).aspx

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    Obrigado pelo retorno, então quanto a formatar para exibição é tranquilo. 

    Como estou utilizando EntityFramework eu nem utilizo o banco para fazer select faço direto pelo DataContext utilizando link. 

    Eu queria mudar o formato justamente para evitar de ter que ficar formatando o retorno, já que irei trabalhar muito com datas e horas. 

    quarta-feira, 8 de outubro de 2014 17:40
  • Nesse artigo ensina como alterar o formato da data que o SQL salva

    Se a sugestão resolver o problema, favor marcar como Resposta.

    Lucas foi exatamente isso que eu já havia feito, mas sem sucesso algum nada mudou. 

    Mesmo assim não funciona.

    • Marcado como Resposta Fernando Mamprin quinta-feira, 9 de outubro de 2014 14:52
    quarta-feira, 8 de outubro de 2014 17:45
  • Você fez todos os testes que informa no final do artigo ou só configurou conforme imagens ?

    No final diz:

    We get the above value, even after we have changed the language setting on the OS level.

    Now if we use set dateformat dmy

    And do an insert in the table we are able to do the changes, but not through the application and we can’t incorporate “set” option in the connection string. So now the question is, how can we achieve our desired result. The answer is a bit tricky :

    Ø Change the OS settings.

    Ø Change the server setting to British English.

    Ø Now create a new user and use dbcc useroptions

    Ø Now you would be seeing the option have changed.


    Se a sugestão resolver o problema, favor marcar como Resposta.

    quarta-feira, 8 de outubro de 2014 17:50
  • Fala Lucas, eu acho muito estranho pois o servidor do Sql tem suas configurações globais definidas em Portugues - BR o Sql foi definido com pt-BR não vejo o porque não funcionar :/. 

    Agora pra eu fazer o que ele indica fica meio complicado pois estou em um domínio e sequer tenho permissões :/

    Estou vendo que se não existir outra maneira terei de deixar como está mesmo. 

    Abraço.

    quarta-feira, 8 de outubro de 2014 18:14
  • Boa tarde Fernando,

    Veja se esse artigo te ajuda. 

    http://smcode.com.br/DataSQL.aspx

    Tente converter a data no script de inserção dos dados, pelo menos ficará garantido que a data pode ir em qualquer padrão que o banco ficará responsável pela conversão.

    Abs.


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx

    quarta-feira, 8 de outubro de 2014 19:12
  • Boa tarde Fernando,

    Veja se esse artigo te ajuda. 

    http://smcode.com.br/DataSQL.aspx

    Tente converter a data no script de inserção dos dados, pelo menos ficará garantido que a data pode ir em qualquer padrão que o banco ficará responsável pela conversão.

    Abs.


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/blog.aspx

    Bruno obrigado pelo retorno. 

    Estou utilizando EF6 com isso não tenho scripts de BD, utilizo o DataContext para fazer a inserção diretamente, e antes dessa inserção eu passo a data no formato dd/MM/yyyy. 

    Abri o chamado como SQL justamente para ver uma forma de resolver isso nas configurações do SQL rs. 

    Abraço.

    quarta-feira, 8 de outubro de 2014 19:17
  • Obrigado pelo retorno, decidi e vou deixar da forma como está. 

    Abraços.

    quinta-feira, 9 de outubro de 2014 14:52
  • Fernando,

    Se o seu Windows esta em Português o SQL Server também, as configurações regionais definidas em Português inclusive formatação de Data e Hora.

    Além disso a conta de usuário esta definida também com a Linguagem em Português, vejo que o grande vilão da história é o próprio EntityFramework!!!

    Já tive problemas similares com este, em alguns projetos que os desenvolvedores utilizam NHibernate!!!

    Em outros casos trabalhando com objetos ODBC o problema estava justamente na configuração do Provider de conexão.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    • Marcado como Resposta Fernando Mamprin quinta-feira, 9 de outubro de 2014 16:30
    quinta-feira, 9 de outubro de 2014 14:54
  • Fernando,

    Se o seu Windows esta em Português o SQL Server também, as configurações regionais definidas em Português inclusive formatação de Data e Hora.

    Além disso a conta de usuário esta definida também com a Linguagem em Português, vejo que o grande vilão da história é o próprio EntityFramework!!!

    Já tive problemas similares com este, em alguns projetos que os desenvolvedores utilizam NHibernate!!!

    Em outros casos trabalhando com objetos ODBC o problema estava justamente na configuração do Provider de conexão.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com

    Obrigado Junior. 

    A verdade é que eu irei que deixar como está e sempre formatar.

    Abraços.

    quinta-feira, 9 de outubro de 2014 16:30