none
Salvar data no sql server RRS feed

  • Pergunta

  • bom dia galera,

    Estou iniciando em vb.net e sql server.

    Estou com um programa de lançamento de notas fiscais. Preciso salvar a data no formato ##/##/####.

    Mais quando o dia e o mes começa com 0(zero), quando puxo o lançamento para a tela a data vem desconfigurada. Porque o 0(zero) não fica salvo no banco.

    Qual função devo usar? 

    Tentei usar o format mais nao consegui.

    Obrigado a todos.

    Att.

    quinta-feira, 13 de dezembro de 2012 12:22

Todas as Respostas

  • É o format sim que você deve configurar.

    http://msdn.microsoft.com/pt-br/library/8kb3ddd4(v=vs.80).aspx

    segunda-feira, 17 de dezembro de 2012 01:45
  • Danimar Ribeiro,

    Estou manipulando um campo para a data inteira, e no banco esta separado como dia, mês e ano. Todos como int.

    Mais como zero a esquerda não vale nada, não grava a data (EX: 01/01/2012).

    Minha duvida seria como eu fazer o format dentro da função de gravar, para ir no formato acima.

    Usei todos os exemplos postados na internet e nada. 

    Att.

    E obrigado pelo link.

    segunda-feira, 17 de dezembro de 2012 12:34
  • Bom, já começou errado.

    Não deverias gravar separado.

    Mas já que está como inteiro no banco, você não vai conseguir salvar 01 no banco, pois zero a esquerda não tem valor e não é salvo. Para salvar 01 use varchar.

    segunda-feira, 17 de dezembro de 2012 19:41
  • Então Danimar,

    A data é separada por que uso dia, mes e ano como index separados para outros eventos.. E nao sei se index pode ser varchar...

    No vb 5 é usado assim Format(mskreferencia.text,"##")...Mais agora não dá, dia que o caracter é invalido para integer.

    Alguma ideia do que posso fazer? 

    Obrigado.

    terça-feira, 18 de dezembro de 2012 02:54
  • Acho que o que você quer está aqui.

    http://msdn.microsoft.com/pt-br/library/system.string.format.aspx

    Salvar em um campo integer 01 é impossivel, ele sempre vai salvar 1.

    Porém o que você deve estar querendo é mostrar 01 no seu sistema né. Então para isso use o String.Format do link.

    terça-feira, 18 de dezembro de 2012 17:57
  • Danimar,

    Coloquei meus campos da data como varchar... Agora minha duvida é com o valor sabe alguma formula para gravar no banco sql no formato ###.###,##.

    Vlw pelas dicas

    quinta-feira, 20 de dezembro de 2012 09:36
  • Viu, você está entendendo as coisas erradas.

    Você não precisa se preocupar a forma que o banco salva os valores ou datas.

    Se o teu campo é um double por exemplo, lá no banco você deve  usar numeric, se você usar data la no banco deve ser datetime ou date.

    A unica coisa que você tem que se preocupar, é na hora de apresentar os dados, por exemplo em uma grid, ou num formulário, e para formatar de acordo com o que você quiser você usa string.format() para qualquer tipo de dado, valor, data, double, decimal etc.

    quinta-feira, 20 de dezembro de 2012 14:47
  • Faça desta maneira:

    obj.DATA = DateTime.Now.ToSting(dd/mm/yyyy);

    abraços...

    segunda-feira, 24 de dezembro de 2012 18:34
  • Obrigado ao Danimar e ao Vinicius.

    Para salvar está certo. Agora o problema na data é puxar do banco para o campo.

    quinta-feira, 27 de dezembro de 2012 00:19
  • Claudio, a sua dúvida é bem simples de resolver no banco de dados.

    A partir do SQL Server 2012 foram implementados as funções TRY_CAST e CONCAT

    CONCAT é uma função bem interessante, que concatena valores de tipos diferentes incluindo valores nulo, retornando uma string.

    TRY_CAST tenta converter para um tipo de dado, e se não conseguir retorna NULL.

    Se entendi corretamente, você tem os 3 campos separadamente, dia, mes e ano, e precisa retornar uma data. Então ficaria assim, usando um campo calculado.

    DECLARE @T TABLE ( dia  TinyInt,

                       mes  TinyInt,

                       ano  SmallInt,

                       Data AS TRY_CAST(RIGHT(CONCAT('0000',ano),4)+RIGHT(CONCAT('00',mes),2)+RIGHT(CONCAT('00',dia),2) AS DATE) )                  

    INSERT INTO @T VALUES ( 10,9,2016 ) , ( 10,4,2016 )

    SELECT * FROM @T

    • Sugerido como Resposta Zé Bill segunda-feira, 19 de setembro de 2016 22:29
    segunda-feira, 19 de setembro de 2016 22:29