Sunday, July 29, 2012

Manejo de fechas en SQL Server

Todavía recuerdo aquellos tiempos en los que programaba en VB 6 y SQL Server, era un relajo el manejo de fechas ya que el cliente y servidor (y en la mayoría de los casos) difiere el formato de la fecha, por ejemplo en el cliente pueden tener el formato de fecha dd/MM/yyyy y en el servidor MM/dd/yyyy.


Con la llegada de .NET se terminó eso, pero me he dado que nuestros vecinos del norte (EU) todavía se les dificulta ese manejo (y lo sé porque tenemos proveedores de EU).


La manera sencilla es la siguiente:


1. Creamos un comando.
2. Agregamos los parametros.
3. Ejecutar consulta.


Ahora el código:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
 
namespace ConsoleApplication1
{
 
 class Program
 {
 
  static void Main(string[] args)
  {
   
   // Establecemos la conexión
   SqlConnection connection = new SqlConnection("CADENA DE CONEXION");
   connection.Open();
 
   // Creamos y configuramos el comando
   SqlCommand command = new SqlCommand();
   command.Connection = connection;
   command.CommandType = System.Data.CommandType.Text;
   command.CommandText = "SELECT * FROM Registros WHERE fechaAlta = @fecha";
 
   // Agregamos el parámetro
   command.Parameters.Add(new SqlParameter()
   {
    ParameterName = "@fecha",
    SqlDbType = System.Data.SqlDbType.Date,
    Value = DateTime.Today
   });
 
   // Ejecutamos la consulta
   using (SqlDataReader reader = command.ExecuteReader())
   {
 
    // Recorrer los registros
    while (reader.Read())
    {
     // Hacer las operaciones correspondientes
     Console.WriteLine(reader["registro"]);
    }
 
   }
 
   // Cerrar conexión
   connection.Close();
   connection.Dispose();
 
   // Destruir objetos
   command = null;
   connection = null;
 
   Console.WriteLine("Presione cualquier tecla para continuar ...");
   Console.ReadKey(true);
 
  }
 
 }
 
}

Como ven usando parametros nos quitamos de ese dolor de cabeza.

No comments:

Post a Comment