Inquiridor
Salvar data no sql server

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.
Todas as Respostas
-
-
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.
-
-
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.
-
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.
-
-
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.
-
-
-
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