Usuário com melhor resposta
Problemas para converter data em SELECT...?

Pergunta
-
Sei que esta dúvida é bastante comum, mas pesquisei bastante e não consegui resolver meu problema, é um simples SELECT ao MySql
public class Funcionario
public DateTime datanasc { get; set; }
...depois disso vem o código de prache, etc, e por fim:
funcionario.datanasc = Convert.ToDateTime(ler["datanasc"]);
...e nesssa última linha vem os erros, sei que desta forma não está certo, mas tentei outras e também não dá.
Obrigado a todos.
Respostas
-
funcionário.datanasc = Convert.ToDateTime(ler["datanasc"].ToString());
Testa assim.
ouler.GetDateTime(ler.GetOrdinal("datanasc"))
- Editado Daniel Brito br quarta-feira, 30 de outubro de 2013 17:21 Dados
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
deu o seguinte erro nesta linha:
"Dados são Null. Não é possível chamar este método ou esta propriedade em valores Null."
...mas todos os campos data estão preenchidos no banco
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
Se vier nulo vai dar erro mesmo coloque um breakpoint e veja a sua query montada e teste diretamente no mysql, depois no momento que seu reader for atribuir o valor veja o que há com WatchWindow, você verá onde esta o erro que provavelmente é na select já que seu banco esta preenchido ou erro de nome coluna.
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
Pare retirar as horas :
Convert.ToDateTime(suaveriavel).ToShortDateString(); //se já for datetime tipo data.ToShortDateString();
Vem no formato brasileiro pq vc esta utilizando padrão brasileiro no seu projeto ou seja a culture pt-br se quiser passar para o americano altere a culture para em-Us- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
Se vc estiver usando ado seu select pode ficar assim :
select isnull(convert(varchar(10),data,103),'0') as data
o isnull verifica se a data for nula trará 0 que é a data 01-01-1900 e se tiver uma data ele converte para dd/mm/aaaa
Junior
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
Não tinha resolvido ?
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
Assim :
ler.GetDateTime(ler.GetOrdinal("suacoluna")).ToShortDateString();
Se foi útil marque...- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
Eu não tenho o MySql aqui pra testar mas faz na variável então, pra não alterar o seu select.
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
A resposta do Junior_luiz é para Sql Server.
Tenta isso:
if(ler["datanasc"] != DBNull.Value)
funcionário.datanasc = DateTime.ParseExact(ler["datanasc"].ToString(), "dd/MM/yyyy", null);
caso não dê, mude "dd/MM/yyyy" para "MM/dd/yyyy"- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:25
-
isnull(convert(varchar(10),datnasc,103),'0') AS datanasc
tenta assim
Junior
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:25
-
O banco de dados é MySql, não vai funcionar. O isnull no MySQL é ifnull e a conversão também é diferente.
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:25
Todas as Respostas
-
funcionário.datanasc = Convert.ToDateTime(ler["datanasc"].ToString());
Testa assim.
ouler.GetDateTime(ler.GetOrdinal("datanasc"))
- Editado Daniel Brito br quarta-feira, 30 de outubro de 2013 17:21 Dados
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
deu o seguinte erro nesta linha:
"Dados são Null. Não é possível chamar este método ou esta propriedade em valores Null."
...mas todos os campos data estão preenchidos no banco
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
Se vier nulo vai dar erro mesmo coloque um breakpoint e veja a sua query montada e teste diretamente no mysql, depois no momento que seu reader for atribuir o valor veja o que há com WatchWindow, você verá onde esta o erro que provavelmente é na select já que seu banco esta preenchido ou erro de nome coluna.
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
Agora funcionou, é que nas propriedades do gridview, eu não estava mostrando a coluna data, daí o erro, obrigado, ajudou muito, outra dúvida, notei que é preciso inserir no mysql datas no formato americano, mas num select vem no formato brasileiro, é normal isso? E como tiro as horas, para mostrar só a data?
-
Pare retirar as horas :
Convert.ToDateTime(suaveriavel).ToShortDateString(); //se já for datetime tipo data.ToShortDateString();
Vem no formato brasileiro pq vc esta utilizando padrão brasileiro no seu projeto ou seja a culture pt-br se quiser passar para o americano altere a culture para em-Us- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
Se vc estiver usando ado seu select pode ficar assim :
select isnull(convert(varchar(10),data,103),'0') as data
o isnull verifica se a data for nula trará 0 que é a data 01-01-1900 e se tiver uma data ele converte para dd/mm/aaaa
Junior
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
-
Não tinha resolvido ?
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
-
Assim :
ler.GetDateTime(ler.GetOrdinal("suacoluna")).ToShortDateString();
Se foi útil marque...- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
-
Eu não tenho o MySql aqui pra testar mas faz na variável então, pra não alterar o seu select.
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:24
-
A resposta do Junior_luiz é para Sql Server.
Tenta isso:
if(ler["datanasc"] != DBNull.Value)
funcionário.datanasc = DateTime.ParseExact(ler["datanasc"].ToString(), "dd/MM/yyyy", null);
caso não dê, mude "dd/MM/yyyy" para "MM/dd/yyyy"- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:25
-
isnull(convert(varchar(10),datnasc,103),'0') AS datanasc
tenta assim
Junior
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:25
-
O banco de dados é MySql, não vai funcionar. O isnull no MySQL é ifnull e a conversão também é diferente.
- Marcado como Resposta Tiago Vinícios quinta-feira, 31 de outubro de 2013 07:25
-
-