Las fechas en SQLServer

Siempre he visto a programadores que a los campos datetime les producen dolores de cabeza, es que por siempre si se cambia el formato de la fecha de una PC esta es cambiada en el lenguaje de programcion esto hace que las consultas enviadas a SQL Server fallen o se caiga el programa pues si haces esto:

if (DateTime.Now.Date == Convert.ToDateTime(“2010-01-01”))

y el formato de fecha ya no es anho-mes-dia sino dia/mes/anho pues el programa salta con una excepcion y se fue todo al mismo ifierno, la solucion en estos casos es crear un objeto datetime y recien compararlo:

DateTime fecha = new DateTime(2010,01,01);

Asi este constructor siempre va a generarte un objeto DateTime correcto, los parametros anho,mes,dia

Bien asta aqui las fechas de manera correcta dentro del lenguaje de programacion pero si hacemos lo mismo hacia sql server pues al pasar la consulta o al armar el sql calro esta podemos siempre pasarle el objeto datetime creado pero va a existir el problema que a nosotros no nos interesa la hora pues queremos saber cuantas ventas se hicieron en una fecha o el resumen de caja del dia, pues asi si no funciona pues nunca vas a poder hacer esto:

“Select * from cabventas where fecha = “+fecha.ToString();

No esto de seguro que te manda al infierno pues esta incluida la hora el valor de fecha es “2010-01-01 12:00:00 a.m.”, asi que va a comparar la hora de si o si, aparte que el campo fecha sql server siempre tiene incluida la hora, pero como hacerlo existe una forma en SQL Server:

SELECT CONVERT(CHAR(10), <field name>, 101) FROM <table name>

Con esto posemos solo extraer la fecha del campo datetime asi nuestra consulta queda de esta manera:

“Select * from cabventas where Convert(char(8),fecha,111) ='”+fecha.tostring()+”‘”;

Aun asi no funcionaria pues nos queda la fecha en nuestra variable, pues veamos ahora una cosa mas, Sql server siempre va a manejar anho,mes, dia de esta manera: “20100101” sin ningun valor de guiones o algun otro separador de fechas asi que podemos tambien hacer lo propio:

string cad = fecha.Year.ToString()+fecha.Month.ToString()+fecha.Day.ToString();

“Select * from cabventas where CONVERT(VARCHAR(10),fecha ,111) ='”+cad+”‘”;

Y santo remedio siempre y por siempre vaz a poder contrastar tus consultas con la BD.

Acerca de

Antes que nada voy a dejar en claro algo, en este blog escribo como se me place, asi que no busquen errores de ortografia o de redaccion que los van a encontrar a montones y tampoco me critiquen o me digan nada sobre ellos pues no tengo intencion alguna de cambiarlos, lo que escribo lo dejo asi y no lo corrijo,claro esta a menos que sean lineas de codigo. Jorge Prado Anci, profesional en desarrollo de aplicaciones, en especial las dirigidas a bases de datos. He trabajado con VFP en casi todas sus versiones, se algo de Java (que no me gusta, es eso solo no me gusta, es bueno pero no me gusta), lo suficiente de PHP como para tener mi propio CMS(es que sigue sin gustarme por la capacidad de desorden que te permite este “lenguaje”), VB lo conoci y lo deteste tanto que lo olvide al punto de no querer adoptar ni por obligacion a su reemplazante VB .NET (por lo mismo de Java) y si C# este si me encanta y aun que conozco bastante bien el lenguaje, la verdad es que me falta mucho del Framework (del 100% estare en un 65%). Soy un apasionado por el orden (en los proyectos de desarrollo), de la programacion en capas (de MVC conozco pero no he aplicado mucho), los estandares y las condenadas pruebas unitaria. Venga creo que ya con esto fue suficiente.

Tagged with: , , ,
Publicado en c#, SQL SERVER
One comment on “Las fechas en SQLServer
  1. […] Actualizados : Pruebas unitarias: Webcast SecondNUG Las fechas en SQLServer Aprender SQL Server, Share Point y Azure (Maraton de webcast) Decompiladores y antidecompiladores […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Escribe tu dirección de correo electrónico para suscribirte a este blog, y recibir notificaciones de nuevos mensajes por correo.

Únete a otros 441 seguidores

Blog Stats
  • 303,829 hits
A %d blogueros les gusta esto: