Israel Aéce

Microsoft MVP, MCP, MCAD, MCTS, MCPD e MCT

My Links

Blog Stats

Archives

Post Categories

Links

Login

Inserindo Datas no SQL Server

Umas preocupações que mais vejo quando alguém quer incluir datas em uma coluna do tipo DateTime no banco de dados SQL Server 2000 é saber qual o formato enviar. Já vi muitos casos onde o pessoal faz algo do tipo:

     Dim d As DateTime = DateTime.Now
     Dim query As String = "INSERT INTO Tabela VALUES('" & d.ToString("MM/dd/yyyy") & "')"

Eu particularmente também já tive essa dúvida e ao procurar saber, o segredo está em não espeficar um formato como é feito acima, deixando o SqlParameter/SqlCommand se encarregar de fazer essa trabalho por nós. Para consertar o código acima, fazendo da forma correta, temos que criar os devidos parametros para o campo (não somente do tipo data, mas qualquer um) e executar a query. Abaixo o exemplo:

     Dim cmd As New SqlCommand("INSERT INTO Tabela VALUES(@Data)", conn)

     Dim data As New SqlParameter("@Data", SqlDbType.DateTime)
     data.Value = DateTime.Now
     cmd.Parameters.Add(data)
     '....
     cmd.ExecuteNonQuery()

posted on Wednesday, September 21, 2005 12:02 AM

Feedback

# re: Inserindo Datas no SQL Server 9/21/2005 1:08 PM Sérgio Silveira

Correcto.

Mas lembra-te e de que sempre que a data puder ser inserida pelo proprio SQL Server, assim deve acontecer para não existir disparidades horárias.

# re: Inserindo Datas no SQL Server 9/21/2005 1:30 PM Israel Aece

Ola Sergio,

Sim, concordo. Sempre que posso opto por um Default Value (GetDate) dentro do proprio campo, mas há situações em que isso não é possível.

Obrigado pela dica,

# re: Inserindo Datas no SQL Server 9/24/2005 8:30 PM Gesiel

Olá Israel,

Sou novo com o VB.NET, mas desde a época do VB3 + Access, até hoje, com o VB6 + SQL Server 2000, eu uso o mesmo esquema:

como no banco de dados as datas são armazenadas num formato padrão numérico de 17 posições, para garantir a portabilidade do código eu gosto de usar: "yyyy-mm-dd".

De outras vezes que tentei fugir a este padrão tive surpresas desagradáveis, como por exemplo, o dia 12/01/2005 ser gravado como 01/12/2005, ou seja, no formato americano de datas (mm/dd/yyyy).

# re: Inserindo Datas no SQL Server 6/15/2007 3:21 PM narciso

PRECISO DO CODIGO EM CSHARP(C#).OBRIGADO

# re: Inserindo Datas no SQL Server 6/15/2007 4:59 PM Israel Aece

SqlCommand cmd = new SqlCommand("INSERT INTO Tabela VALUES(@Data)", conn);
SqlParameter data = new SqlParameter("@Data", SqlDbType.DateTime);
data.Value = DateTime.Now;
cmd.Parameters.Add(data);
//....
cmd.ExecuteNonQuery();

Title  
Name  
Url
Box Code
Protected by FormShield
Comments