Inquiridor
Problema - Gravação de DateTime

Pergunta
-
Pessoal,
Estou tendo um problema com gravação de campo datetime corretamente em minha base.
Após o usuário informar a Data e Hora e submeter, irei pegar como string, que posteriormente
converto pra datetime e gravo no banco.
Porém quando é por exemplo:
01/01/2012 00:00:00 , grava na base como 01/01/2012 12:00:00
Outro exemplo:
01/01/2012 16:00:00 , grava como 01/01/04:00:00Private Function RetDateTime(ByVal sDate As String, ByVal sHour As String) As DateTime Dim dDate As DateTime dDate = Convert.ToDateTime(sDate) dDate = DirectCast(dDate, DateTime).AddHours(sHour.Substring(0, 2)) dDate = DirectCast(dDate, DateTime).AddMinutes(sHour.Substring(3, 2)) dDate = DirectCast(dDate, DateTime).AddSeconds(sHour.Substring(6, 2)) Return dDate End Function
Qual pode ser a solução? obrigado
- Editado .NET Dev quinta-feira, 9 de fevereiro de 2012 11:00
Todas as Respostas
-
AT, bom dia. Voce está enviando para o BD em qual formato? String ou DateTime? Tente enviar como DateTime mas antes confira o formato da data. Geralmente a data fica desta forma no BD: "2011-06-17 14:21:00". Poste como vc está enviando para o BD.
Atenciosamente,
Onofre A. Juvencio Junior
(Se a achou útil o post, por favor, marque-o como resposta) -
Bom dia. O colega estava tendo o mesmo problema. Veja :
Paulo César Viana
.NET Developer
MCC - Microsoft Community Contributor
MCP - Microsoft Certified Professional
MCTS - Microsoft Certified Technology Especialist
--
Marque as respostas e contribua para uma melhora no fórum. -
Boas! (fiz o exemplo em C#, mas serve como base para você resolver o problema ..)
Assumindo que você recebe a data e a hora nos formatos dd/MM/yyyy e hh:mm, você poderia tentar o seguinte código:
string datePart = "01/01/2012"; string timePart = "12:00"; DateTime fullDate; var dateTime = String.Format("{0} {1}", datePart, timePart); if (DateTime.TryParseExact(dateTime, "dd/MM/yyyy HH:mm", CultureInfo.CurrentCulture, DateTimeStyles.AssumeLocal, out fullDate)) { // Seu código ... }
Isso vai jogar a data já convertida para a variável fullDate :)
[]'s
Rodrigo
Lembre-se se marcar como resposta se ajudar! :)
- Editado Rodrigo Vedovato quinta-feira, 9 de fevereiro de 2012 11:26
-
Amigo, bom dia.
Seu servidor de banco de dados deve está com o padrão de Data/Hora dos estados unidos
como você está montando o insert? está passando por paramêtros ?
você pode fazer utilizando CultureInfo, por exemplo:
System.Globalization.CultureInfo cultInfo = new System.Globalization.CultureInfo("en-US"); DateTime dtNow = DateTime.Now; using (SqlConnection conn = new SqlConnection(connString)) { conn.Open(); string sql = "insert Venda(ValorTotal,dtVendas,Cliente_Id)"; sql +=" values"; sql+="(@Valor,@Data,@ClienteID)"; using(SqlCommand cmd = new SqlCommand(sql,conn)) { cmd.Parameters.Add("@Valor", SqlDbType.Float).Value = 0; cmd.Parameters.Add("@Data", SqlDbType.DateTime).Value = dtNow.ToString(cultInfo); cmd.Parameters.Add("@ClienteId", SqlDbType.Int).Value = 1; cmd.ExecuteNonQuery(); } }
Olavo Oliveira Neto
http://olavooneto.wordpress.com
Twitter @Olavooneto
Se for útil marque como resposta e faça um Developer feliz :) -
-
-
Olá ao invez de vc passa string para o banco manda Datetime.
E na pagina aspx coloque LCID="1046" para ficar no padrão Brasileiro.
public void datasServidor()
{
DateTime data1 = DateTime.Now;
DateTime data2 = DateTime.Today;
}Assim vc terá a data com a hora, e não esquece de verificar se no bando o campo da insert se ele está como Varchar ou Datetime.
(Se a achou útil o post, por favor, marque-o como resposta)
- Sugerido como Resposta Renan Buzzi quinta-feira, 23 de fevereiro de 2012 20:36